具有网格视图、访问、日期时间和转换功能的 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;
}
}
提前致谢
这
看起来像日期时间格式问题。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]
获取它们时,它们都在第一列中。你必须确保这一点。
您可以向上面的代码添加断点并对其进行调试。您可以查看myLabel2
和myLabel4
是否有任何值。
DateTime date = DateTime.ParseExact(myLabel2.Text, "dd/MM/yyyy", null);