生成jqgrid后,如何对特定列实现自定义排序?

时间:2011-03-14 03:50:50

标签: javascript jqgrid

在使用javascript(jQuery)填充colModel中的特定列之后,是否有一种方法可以用来覆盖/插入自定义函数“sorttype”?

我在这里找到了一个示例:http://www.ok-soft-gmbh.com/jqGrid/CustomSorttype1.htm,其中sorttype是使用初始设置实现的,但我需要在之后更改它。

尝试:

var attName = grid.getGridParam("colModel")[1].name;
        grid.setColProp(attName, { sorttype: function (cell) {
            if (cell == '<div>x</div>') { return '0' } else { return '1' };
        }
        });

但不起作用。

1 个答案:

答案 0 :(得分:9)

sorttype作为函数的用法对于jqGrid的任何本地数据类型都是有用的,或者对于使用loadonce:true jqGrid paremter和“remote”数据类型'json'或'xml'的情况。如果需要,您可以动态更改任何列的sorttype

我让你the new demo来演示这个功能。在开始时,网格将按“客户”列排序,列包含将被解释为文本字符串。结果显示在下面

enter image description here

Wenn我们勾选“设置自定义排序类型功能”复选框,网格将按照下一张图片显示进行排序

enter image description here

为了实现这样的排序,我定义了函数

var myCustomSort = function(cell,rowObject) {
    if (typeof cell === "string" && /^test(\d)+$/i.test(cell)) {
        return parseInt(cell.substring(4),10);
    } else {
        return cell;
    }
}

和复选框上的'change'事件处理程序

$("#customsorttype").change(function() {
    var isChecked = $(this).is(':checked');
    if (isChecked) {
        cm.sorttype = myCustomSort;
    } else {
        cm.sorttype = "text";
    }
    grid.trigger("reloadGrid");
});

其中grid$("#list")

如果再次单击该复选框,将使用sorttype:"text"的原始排序方法。