jqGridfilter或按日期搜索不工作的客户端

我有一个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的内容并按Enter键时,搜索将返回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。 有人有任何想法如何解决这个问题? 我知道搜索服务器端很容易,我可以传递该字符串,解析它,然后bam。 但如果可以,我想留在客户方面。 我能够在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“而不是”11/17/2010“),你可以覆盖jqGrid的相应函数( $.jgrid.from的函数$.jgrid.from )并修复问题。

前段时间我花了很多时间准备相应的演示 ,演示了这种技术。 该演示准备作为三角形论坛的答案 。 在这个问题中,人们希望在搜索'bénevise'的情况下找到像'bénevise'这样的字符串。 因此,必须实现真正的自定义本地搜索。 我希望这些信息足以帮助您解决您描述的问题。

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

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