jqGrid:客户端排序不适用于日期!

时间:2011-02-16 20:08:49

标签: jqgrid

我在jqGrid中有一个日期列,该列的colOption定义为:

{name:'LTD', index:'LTD', width:110, align:'right', sortable:true, sorttype:'date', formatoptions:{srcformat:'Ymd', newformat:'d/m/Y'}, formatter: 'date'},

从服务器返回的JSON数据在该字段中具有“20101231”等,并且它正确显示(即,它显示为'31 / 12/2010')。但是,单击列标题对其进行排序,什么都不做!

我能让排序工作的唯一方法是不更改srcformat(即接受默认的'Y-m-d')。但是,它不适用于任何其他自定义格式。

另一个问题是搜索此列。无论我如何在搜索弹出窗口中指定值(与运算符相等),它都找不到记录!!

jQuery : 1.4.4
jqGrid:  3.8.2

可能是什么原因?

1 个答案:

答案 0 :(得分:2)

'date'不支持srcformatnewformat格式为'Ymd'的格式选项。如果必须是包含'Y','m'和'd'之间的分隔符的字符串。所以我严格建议您更改服务器代码以生成ISO 8601日期格式'Y-m-d'的日期。

如果您无法更改服务器代码,则必须使用custom formatter才能在新格式中显示日期:'d / m / Y'。您可以使用日期列的以下参数代替formatoptions:{srcformat:'Ymd', newformat:'d/m/Y'}, formatter: 'date'

sorttype: 'date', datefmt:'d/m/Y',
formatter: function (cellvalue, options, rowObject) {
    var y = Number(cellvalue.substring(0,4));
    var m = Number(cellvalue.substring(4,6));
    var d = Number(cellvalue.substring(6,8));
    return String(d)+'/'+String(m)+'/'+String(y);
}

您将能够显示和进行本地数据排序,但是对于数据搜索,如果要搜索显示为“16/10”的日期,则必须使用源格式“20101016”。 / 2010" 。请参阅小型演示here