我的jqGrid包含一个特殊列,其值由另一个值生成,如“持续时间跨度”列,其实际值以秒为单位,如3690秒,我应该将其转换为格式化字符串'Hour:Minute:Second',in这是因为它是'1:1:30'。现在,我希望它在排序方面很有效,所以我编写了一个自定义函数来处理这个问题:
1,以下代码片段是列定义:
{
name : 'time',
index : 'time',
align: 'center',
width : '12%',
sorttype : sortTimeFuc
}
2,以下代码片段是sort函数:
var sortTimeFuc = (function(cell) {
var a = cell.split(':');
var value = parseInt(a[2]) + parseInt(a[1]) * 60 + parseInt(a[0]) * 3600;
return value;
});
但它的工作原理不正确如下:
有人可以帮我吗?非常感谢。
答案 0 :(得分:1)
在我看来,你犯了一些错误。首先,您应该删除函数上的括号。不需要的括号可以跟随函数的调用。我在代码中看到的第二个也是最重要的错误是没有第二个参数10的parseInt的使用。最后一个错误是width : '12%'
的使用。 jqGrid不支持宽度内的'%'。除此之外,您只能使用width: 12
并指定总网格的width
或使用autowidth: true
。因为选项shrinkToFit: true
是默认选项,如果将根据列的jqGrid和width
属性的总宽度来缩放列的宽度,这将定义列之间的比例。
因此生成的代码可以如下所示
{
name: 'time',
align: 'center',
width: 12,
sorttype: function (cell) {
var a = cell.split(':');
return parseInt(a[2], 10) + parseInt(a[1], 10) * 60 +
parseInt(a[0], 10) * 3600;
}
}
请参阅the answer作为自定义排序非常接近实施的示例。
答案 1 :(得分:0)
因为合并的时间字符串符合字符串的排序条件,所以只需将此列的sorttype设置为“text”即可。问题解决了。