具有网格视图、访问、日期时间和转换功能的 C#

本文关键字:转换 功能 时间 日期 网格 视图 访问 | 更新日期: 2023-09-27 18:30:21

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

关于如何从网格视图文本框中获取值,然后将其从字符串转换为日期时间格式的任何想法?

这是到目前为止的代码...

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;
     }
 }

提前致谢

具有网格视图、访问、日期时间和转换功能的 C#

看起来像日期时间格式问题。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);

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

文本框

都在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是否有任何值。

DateTime date = DateTime.ParseExact(myLabel2.Text, "dd/MM/yyyy", null);