jqGrid搜索格式化的日期

时间:2012-08-03 16:17:34

标签: javascript jquery datetime jqgrid formatting

我的jqGrid中有一个日期列,我正在格式化。另外,我有一个工具栏搜索。我遇到的问题是当我在搜索栏中输入数据来搜索格式化的日期数据时,它不会搜索格式化的日期,它可能会搜索预先格式化的日期。

有没有办法搜索格式化的日期,或者在将数据插入jqGrid之前我是否必须尝试格式化?

编辑:部分代码

var gridLayout = [
        {name: "name", index: "name", width: "250px"},
        {name: "state", index: "state", width: "50px", hidden: true},
        {name: "stateName", index: "stateName", width: "100px", hidden: true,
            sorttype: function(cellValue, rowObj) {
                return rowObj.state;
            }},
        {name: "stateImg", index: "stateImg", width: "50px", align: "center",
            sorttype: function(cellValue, rowObj) {
                return rowObj.state;
            }},
        {name: "launchDate", index: "launchDate", width: "150px", sorttype: "date",
            formatter: 'date', formatoptions: {srcformat: "ISO8601Long", newformat:"n/j/Y, g:i:s A"}},
        {name: "lastWorked", index: "lastWorked", width: "150px",
            formatter: 'date', formatoptions: {srcformat: "ISO8601Long", newformat:"n/j/Y, g:i:s A"}}
    ];

我使用在launchdate / lastworked元素上方的工具栏搜索,我试图以“newformat”字段中指定的格式搜索日期,但是当我这样做时它不会回复任何数据。

运行测试后,它确实使用旧格式进行搜索。

编辑:

我在这里找到了一个在线示例:http://www.ok-soft-gmbh.com/jqGrid/MarkR.htm

如果您在日期搜索栏中输入10/31/2007并按Enter,则不会显示任何内容。但是,如果您键入2007-10-31并按Enter键,则单元格10/31/2007的行会出现在搜索结果中。这就是我正在努力解决的问题。

编辑:这是jqGrid 4.4.0,jQuery 1.7.2

1 个答案:

答案 0 :(得分:2)

jqGrid在本地搜索/过滤期间使用内部函数parseDate。实施非常专有。我在函数中发布了许多错误修复。例如,在the last one中,我建议对您使用的jn格式进行一些更改。错误修复包含在您使用的当前版本4.4.0中。

不幸的是,jqGrid的当前版本(4.4.0)仍然不支持您使用的格式g。目前仅支持h格式。要支持格式g,可以包含行

if(format[k] === 'g') {
    tsp.h = parseInt(date[k],10);
}
the line if(date[k] !== undefined) {之前的

如何在the demo上看到修改过的代码可以正常工作:

enter image description here

我在演示中使用的jquery.jqGrid.src.js的固定版本,您可以获得here

更新:写完答案后,我将the following bug report发布到了trirand。我想通知所有它现在包含在jqGrid的主代码中(参见here)。因此,jqGrid的下一个版本(版本4.4.0之后的下一个版本)将支持日期格式g