我在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
可能是什么原因?
答案 0 :(得分:2)
'date'不支持srcformat
或newformat
格式为'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。