【发布时间】:2011-06-13 08:31:37
【问题描述】:
我有一个 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 提出的一些示例中复制这一点,所以这要么是一个问题,要么是我在配置中遗漏了一些东西......
【问题讨论】:
-
顺便说一下jqGrid可以为你做AJAX调用,所以
data.rows的使用就不需要了。查看来自stackoverflow.com/questions/2835957/…、stackoverflow.com/questions/4169384/… 和trirand.com/blog/?page_id=393/feature-request/rest-support/… 的一些链接。我可以继续链接... -
实际上,我不得不将网格的创建封装在我的 ajax 调用中。原因是我必须调用 GridUnload() 因为我正在动态更新过滤器工具栏中的下拉过滤器。我浏览了文档,找不到类似 trigger('reloadToolbar') 的东西。
标签: jquery asp.net-mvc json jqgrid asp.net-mvc-3