jqGrid filterToolbar-使用jquery ui日期选择器在DateTime上进行筛选



我一直在研究使用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']

最新更新