2012-09-04 65 views
1

我一直在寻找使用filterToolbar按日期时间过滤jqGrid。jqGrid filterToolbar - 使用jquery ui datepicker过滤DateTime

我的问题是根据Olegs优秀的回答here

我终于想通了如何触发日期栏搜索如下:

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})"和 addingSystem.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 

增加了一个新的字符串FormatMapping使用SqlServer.datediff

回答

0

好了今天上午想通了

"(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']