jqGrid过滤器或按日期搜索不工作的客户端

我有一个ASP.NET MVC 3页面。 在它上面,我有一个表格,我使用来自ajax调用的JSON数据变成一个jqGrid。 网格具有以下设置:

myGrid = $('#myGrid');
myGrid.jqGrid({
    caption: 'My Grid',
    datatype: 'local',
    data: data.rows,
    height: 250,
    pager: '#myPager',
    viewrecords: true,
    colModel: [
        ...,
        {
            label: 'blah',
            name: 'blah',
            align: 'left',
            sortable: true,
            editable: false,
            width: 85,
            formatter: 'date',
            sorttype: 'date',
            datefmt: 'm/d/Y',
            formatoptions: { srcformat: 'm/d/Y', newformat: 'm/d/Y' }
        },
        ...
    ]
});

// turn on filter toolbar
myGrid.filterToolbar();

data.rows从ajax调用中返回。 这除了一个以外的所有方面都有效。 我可以对客户端进行分页,对客户端进行排序,然后按照我显示colModel的字段进行搜索。 这个'blah'字段是日期字段,它以mm / dd / yyyy格式正确显示日期。 但是,当我在工具栏中键入类似于11/17/2010的内容并按下回车键时,搜索将返回0条记录。

所以我深入研究了jqGrid代码,以下是它在搜索之前生成的代码:

{"groupOp":"AND","rules":[{"field":"blah","op":"bw","data":"11/17/2010"}]}

最终,当它遍历每一行并评估字段上的操作时,eval(m)&& p.push(this)行,m是这样的:

(String(this.blah).substr(0,10) == String("11/17/2010"))

基本上,它在我看来不认为该领域是一个日期。 它调用parse而不是parseDate。 任何人有任何想法如何解决这个问题? 我知道搜索服务器端很容易,我可以通过该字符串,解析它,并巴姆。 但是,如果可以的话,我想留在客户端。 我能够在Oleg和Tom放置的一些示例中复制这个,所以它可能是一个问题,或者我在配置中丢失了一些东西......


我发现你的问题很有意思,所以我对你的问题+1。 因为你张贴了这一行

(String(this.blah).substr(0,10) == String("11/17/2010"))

在本地搜索过程中用于eval ,我想你花了很多时间来了解本地搜索是如何实现的。 因为你看到上面的行(见(String(this.blah).substr(0,10) ... )不是应该做的( String(this.blah)的值将是“2010-11- 17" ,而不是‘2010/11/17’),可以覆盖jqGrid的(功能的相应功能_getStr$.jgrid.from )和方式解决问题。

前段时间我花了很多时间准备相应的演示,演示了这种技术。 演示准备作为三位论坛的答案。 在问题一想找到像琴弦'bénevise'在搜索的情况下, 'benevise' 。 所以人们必须实现真正的自定义本地搜索。 我希望这些信息足以让你解决你描述的问题。

更新 :在我看来,我发现了一个更简单的解决方法。 您应该为包含数据的'blah'列定义searchoptions: {sopt: ['eq','ne']} 。 然后"bw" (开头)不会用于该列。 “等于”和“不等于”操作在本地搜索中正常工作。

更新2 :这里是我使用sopt选项的工作示例。

链接地址: http://www.djcxy.com/p/4417.html

上一篇: jqGrid filter or search by date not working client side

下一篇: Video hosting platform or CDN with streaming video, which and why?