1

我正在格式化的 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

4

1 回答 1

2

jqGrid在本地搜索/过滤期间使用内部函数parseDate 。该实现是非常专有的。我在函数中发布了许多错误修复。例如,在上一个j中,我建议对您使用的支持和n格式进行一些更改。错误修复包含在您使用的当前版本 4.4.0 中。

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

if(format[k] === 'g') {
    tsp.h = parseInt(date[k],10);
}

在与. _if(date[k] !== undefined) {

您如何在演示中看到修改后的代码将起作用:

在此处输入图像描述

我在演示中使用的固定版本jquery.jqGrid.src.js你可以在这里找到

更新:写完答案后,我向 trirand发布了以下错误报告。我想告诉大家它现在包含在 jqGrid 的主代码中(见这里)。所以jqGrid的下一个版本(4.4.0之后的下一个)会支持g日期中的格式。

于 2012-08-03T18:04:21.037 回答