具有Gridview、Access、DateTime和转换功能的C#

具有Gridview、Access、DateTime和转换功能的C#,c#,database,string,datetime,gridview,C#,Database,String,Datetime,Gridview,我一直在走走过场,但似乎仍然不能把这件事做好。我在gridview中有从access数据库填充的文本框。它们都是日期时间值。在后端代码中,我尝试遍历所有这些值,然后应用条件格式。由于一些未知的原因,我无法从gridview中的那些文本框中获取值,当我这样做时,应用程序会将它们视为字符串,而不是日期时间。转换是徒劳的,因为相同的错误“字符串未被识别为有效的日期时间。”不断弹出 关于如何从gridview文本框中获取值,然后将其从字符串转换为日期时间格式,您有什么想法吗 这是迄今为止的代码 for

我一直在走走过场,但似乎仍然不能把这件事做好。我在gridview中有从access数据库填充的文本框。它们都是日期时间值。在后端代码中,我尝试遍历所有这些值,然后应用条件格式。由于一些未知的原因,我无法从gridview中的那些文本框中获取值,当我这样做时,应用程序会将它们视为字符串,而不是日期时间。转换是徒劳的,因为相同的错误“字符串未被识别为有效的日期时间。”不断弹出

关于如何从gridview文本框中获取值,然后将其从字符串转换为日期时间格式,您有什么想法吗

这是迄今为止的代码

for (int p = 0; p < rowscount; p++)
 {
     var myLabel2 = (TextBox)GridView1.Rows[p].Cells[0].FindControl("Label2");
     var myLabel4 = (TextBox)GridView1.Rows[p].Cells[0].FindControl("Label4");

     DateTime start = Convert.ToDateTime(myLabel2.Text).Date;
     DateTime now = DateTime.Now.Date;
     DateTime end = Convert.ToDateTime(myLabel4.Text).Date;

     if (now >= start && now <= end)
     {
         myLabel2.BackColor = Color.Chartreuse;
         myLabel4.BackColor = Color.Chartreuse;
         myLabel7.BackColor = Color.Chartreuse;
         myLabel9.BackColor = Color.Chartreuse;
     }
     else
     {
         myLabel2.BackColor = Color.White;
         myLabel4.BackColor = Color.White;
         myLabel7.BackColor = Color.White;
         myLabel9.BackColor = Color.White;
     }
 }
for(int p=0;p如果(now>=start&&now这看起来像是datetime格式问题。您的GridView以一种方式将datetime转换为字符串,您正尝试使用不同的格式将其转换回datetime。而不是使用
convert.ToDateTime
尝试使用:


使用适用于您案例的格式。

GridView1
第一列的文本框,用于代码:

var myLabel2 = (TextBox)GridView1.Rows[p].Cells[0].FindControl("Label2");
var myLabel4 = (TextBox)GridView1.Rows[p].Cells[0].FindControl("Label4");
这意味着文本框的名称是“Label2”和“Label4”,当您使用
单元格[0]
获取它们时,它们都位于第一列。您必须确保这一点


您可以向上面的代码添加断点并对其进行调试。您可以查看
myLabel2
myLabel4
是否有任何值。

您可以显示要转换的示例
myLabel2.Text
myLabel4.Text
吗?是的,两个文本框都在第一列,并且都有值……文本框中的字符串是“2012/04/03 12:00:00 AM”,是否有办法将此字符串转换为datetime格式?是的,
convert.ToDateTime
datetime.Parse
都可以转换这种格式的字符串。哪一行导致错误?datetime结果=datetime.ParseExact(dateString,format,provider);这似乎是导致问题的行。dateString的实际值似乎处于争用状态……。如果出现错误“String未被识别为有效的DateTime”仍然会弹出?可能它根本不是日期时间字符串。请仔细检查代码以找出原因。如果不是,它可能是什么格式?可能是数据库中的人口问题吗?仔细检查代码并没有揭示太多信息…字符串可能是错误的数据,例如非日期时间。之前的
myLabel2.Text
值是多少您试图将其转换为datetime?“字符串未被识别为有效的datetime。”…仍然无效…这可能是实际数据库字段的问题吗?
DateTime date = DateTime.ParseExact(myLabel2.Text, "dd/MM/yyyy", null);
DateTime date = DateTime.ParseExact(myLabel2.Text, "dd/MM/yyyy", null);