1

我的 jqGrid 包含一个特殊列,其值由另一个值生成,例如 Duration Span 列,其实际值以秒为单位,如 3690 秒,我应该将其转换为格式化字符串“小时:分钟:秒”,因此它是“1:1:30”。现在,我希望它在排序中运行良好,所以我编写了一个自定义函数来处理这个问题:

1,下面的代码片段是列定义:

{
    name : 'time',
    index : 'time',
    align: 'center',
    width :  '12%',
    sorttype : sortTimeFuc
} 

2、以下代码片段为排序功能:

var sortTimeFuc = (function(cell) {
    var a = cell.split(':');
    var value = parseInt(a[2]) + parseInt(a[1]) * 60 + parseInt(a[0]) * 3600;
    return value;
});

但它工作不正确,如下所示:

在此处输入图像描述

有人可以帮我吗?非常感谢。

4

2 回答 2

1

在我看来,你犯了一些错误。首先,您应该删除函数上的括号。不需要的括号可以跟随函数的调用。我在您的代码中看到的第二个也是最重要的错误是使用parseInt而没有第二个参数 10。最后一个错误是使用width : '12%'. jqGrid 不支持宽度内的“%”。取而代之的是,您可以使用 justwidth: 12并指定width总网格或使用autowidth: true. 因为该选项shrinkToFit: true是默认选项 if 将根据 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;
    }
}

将答案视为自定义排序非常接近实现的示例。

于 2013-02-05T07:22:01.403 回答
0

因为合并的时间字符串满足字符串的排序条件,所以只需将该列的排序类型设置为'text'即可。问题解决了。

于 2013-02-05T07:21:43.280 回答