我一直在研究使用filterToolbar按日期时间过滤jqGrid。
我的问题是基于奥列格在这里的出色回答。
我终于想出了如何在日期触发工具栏搜索,如下所示:
colModel: [{
name: 'RequestDate',
index: 'RequestDate',
formatter: 'date',
formatoptions: {
newformat: 'm/d/Y h:iA'
},
searchoptions: {
sopt: ['eq'],
dataInit: function (elem) {
$(elem).datepicker({
changeYear: true,
changeMonth: true,
onSelect: function (dateText, inst) {
setTimeout(function () {
$('#MyGrid')[0].triggerToolbar();
}, 50);
}
});
}
}
}]
现在,当从选择器中选择日期时,我想返回给定日期的所有记录,忽略时间。
我尝试过更新FilterObjectSet
方法,但没有成功。有人能够成功地实现这一点吗?
我尝试过的:(请参阅Olegs链接解决方案中的代码)
将FormatMapping设置为"(dateadd(dd,0, datediff(dd,0, it.{0})) = @p{1})"
将System.DateTime添加到switch语句:
case "System.DateTime":
param = new ObjectParameter("p" + iParam, Convert.ToDateTime(rule.data));
break;
但这将导致EntitySqlException:
'dateadd' cannot be resolved into a valid type or function.
有人有解决方案吗?
好的,今天早上解决了:
增加了一个新的操作:
de //de - date equals
向使用SqlServer.datediff
:的FormatMapping添加了一个新字符串
"(SqlServer.datediff('DAY', it.{0} , @p{1}) = 0)" //de - date equals
并添加了日期案例:
case "System.DateTime":
param = new ObjectParameter("p" + iParam, Convert.ToDateTime(rule.data));
break;
将colModel中的sopt更改为sopt: ['de']