2013-04-23 76 views
3

我想按日期来过滤数据视图我进行 '>' 操作我也试过DateTime.Now.ToString("MM/dd/yyyy"),并且我得到了同样的错误。无法在System.String和System.DateTime的

我在这里做错了什么?

+0

我试图复制你的错误,但代码工作正常。我的表有一个名为Date的字段,类型为System.DateTime。这是数据表中唯一的字段。我逐字使用了你的rowfilter。这导致我相信你的日期字段不是真正的日期时间。 – 2013-04-23 19:56:42

回答

8

如果您使用字符串值,您需要用'替换#

例如:

dvEvents.RowFilter = "date > '" + DateTime.Now.ToString() + "'"; 

参见this reference

+2

我也推荐使用'DateTime.Now.ToString(CultureInfo.InvariantCulture,“u”)'来避免用户文化设置的问题。 – Dai 2013-04-23 19:51:20

2

它看起来像date被定义为一个字符串。你有两个选择。

您可以确保字符串存储在yyyyMMdd格式(以便排序和筛选工作正常)和过滤器,如:

dvEvents.RowFilter = "date > '" + DateTime.Now.ToString("yyyyMMdd") + "'"; 

也可以打开date成实际DateTime列,让你当前的代码

+0

我的结论也是如此。 – 2013-04-23 19:58:51

0

如果日期来自数据库,那么在进行比较之前您必须先进行区域设置转换。

0

我有一个类似的问题,并没有任何已经建议的决议工作。 解决方法是使用

DataTable dt = GetTableData(); 
DataView dvEvents = dt.DefaultView; 
dvEvents.RowFilter = "date > '" + DateTime.Now.ToString("MM/dd/YYYY") + "'"; 

希望这可以帮助别人。

相关问题