【发布时间】:2018-08-02 10:59:08
【问题描述】:
我遇到了一个导致过滤器工作不正常的错误 - 也就是说,当我更改 datetimepicker 中的值时,datagridview 变为空
我使用的代码是:
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
dataGridView1.DataSource = db.Expenses
.Where(x => x.Period == dateTimePicker1.Value)
.ToList();
}
【问题讨论】:
-
也许您想使用 >= 或
-
您的数据库中的
Period字段中究竟包含了什么样的内容?它的数据类型是什么?不管是什么,通过使用 == 你可能会限制它,所以它不太可能匹配任何东西,特别是如果 DB 字段或 datetimepicker 值或两者都涉及时间组件 - 它真的会匹配到确切的第二个?通常使用日期过滤器进行过滤,以便显示所选日期之前或之后的所有日期,而不是完全匹配。您可能还需要考虑在比较之前从两个字段中剥离时间分量 -
如果 query 没有返回任何内容,则网格将为空。这不是 DateTimePicker 中的错误。
Period是什么,dateTimePicker1返回的值是多少?我怀疑您正在尝试加载单个日期的数据,但Period是DateTime -
db.Expenses是否有您在datetimepicker中选择的周期? -
@ershoaib 从描述中可以清楚地看出它没有!否则查询将返回结果。更有趣的是 a) OP 的实际预期功能是什么,以及 b) 字段的确切内容是什么以及采用什么格式。
标签: c# winforms datagridview