-1

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

关于如何从 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;
     }
 }

提前致谢

4

3 回答 3

0
DateTime date = DateTime.ParseExact(myLabel2.Text, "dd/MM/yyyy", null);
于 2012-04-08T15:21:33.570 回答
0

这看起来像日期时间格式问题。您的 GridView 以一种方式将日期时间转换为字符串,并且您尝试使用不同的格式将其转换回日期时间。而不是Convert.ToDateTime尝试使用DateTime.ParseExact(String, String, IFormatProvider)

CultureInfo provider = CultureInfo.InvariantCulture;
string format = "dd/MMM/yyyy h:mm tt zzz";
DateTime result = DateTime.ParseExact(dateString, format, provider);

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

于 2012-04-08T14:40:55.713 回答
0

文本框都在第一列GridView1吗?对于代码:

var myLabel2 = (TextBox)GridView1.Rows[p].Cells[0].FindControl("Label2");
var myLabel4 = (TextBox)GridView1.Rows[p].Cells[0].FindControl("Label4");

这意味着您的文本框的名称是“Label2”和“Label4”,它们都在您Cells[0]用来获取它们的第一列中。你必须确保这一点。

您可以在上面的代码中添加断点,并对其进行调试。您可以查看是否 myLabel2myLabel4任何价值。

于 2012-04-08T14:43:23.357 回答