【发布时间】:2020-03-10 16:32:03
【问题描述】:
我有一个数据网格视图,其中有一列填充了日期,我想要一个文本框只显示最近的一个,我所做的是在文本框 (01/01/0000) 中放置一个非常早的日期,然后运行整个数据网格都在一个 for 循环中,但它给了我这个错误
字符串未被识别为有效的日期时间
dataGridView1.Columns[14].DefaultCellStyle.Format = "dd/MM/yyyy";
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
DateTime date = Convert.ToDateTime(dataGridView1.Rows[i].Cells[14].Value.ToString());
DateTime date1 = DateTime.ParseExact(dataRecente.Text, "dd/MM/yyyy", System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat);
if (date > date1)
{
dataRecente.Text = Convert.ToString(date);
}
}
【问题讨论】:
-
首先,DGV 是一个糟糕的数据容器选择。
DataTable或List<T>可以是允许使用一行代码进行过滤的数据源。接下来,没有理由在循环中一遍又一遍地解析日期 - 它是相同的日期。此外, DateTimePicker 将消除解析任何内容的需要。您也很有可能在循环后期遇到 NRE -
按日期降序排列,然后取第一个值。
-
我正在订购该列,但它认为它是一个字符串,因此它按天而不是按日期排序,例如 01/01/1000 将比程序的 30/02/2017 更新
标签: c# datetime datagridview