DataGridView RowFilter按日期

时间:2014-11-11 00:26:18

标签: c# datetime datagridview datatable rowfilter

我的dataGridView_flaggedComments有10行。 Comments_Date列的单元格中的值以31/12/2014 12:01 PM的格式显示日期,如果我从comboBox_stockDates选择日期(没有时间部分)(例如2014年12月31日),我希望它过滤(并显示)具有31/12/2014 xx:xx xx的所有行。

即使所选日期(例如2014年12月31日)与包含31/12/2014 xx:xx xx的行匹配,以下代码也会产生零结果。知道这里出了什么问题吗?

string dtFilter = string.Format("Comments_Date = #{0}#", comboBox_stockDates.SelectedItem.ToString());
(dataGridView_flaggedComments.DataSource as DataTable).DefaultView.RowFilter = dtFilter;

或者,有没有办法将两个日期转换为字符串然后比较?我试图使用LIKE运算符,但错误说不能用于比较DateTime和String。

非常感谢任何帮助和指导!谢谢。 :)

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题,所以我提出了自己的答案。对于正在寻找类似问题的人来说,它可能会有所帮助。

string str = comboBox_stockDates.SelectedItem.ToString();
DateTime date = DateTime.ParseExact(str, "dd/MM/yyyy", CultureInfo.GetCultureInfo("en-GB"));
string dtFilter = string.Format(
    "[Comments_Date] >= '{0} 12:00:00 AM' AND [Comments_Date] <= '{0} 11:59:59 PM'", date.ToString("dd/MM/yyyy"));
(dataGridView_flaggedComments.DataSource as DataTable).DefaultView.RowFilter = dtFilter;