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

bcm*_*bcm 2 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' };
        }
        });
Run Code Online (Sandbox Code Playgroud)

但不起作用.

Ole*_*leg 9

sorttype作为函数的用法可用于jqGrid的任何本地数据类型,或者在使用loadonce:true带有"remote"数据类型'json'或'xml' 的jqGrid paremter的情况下.如果需要,您可以sorttype动态更改任何列.

我为您制作了新演示以演示该功能.在开始时,网格将按"客户"列排序,列包含将被解释为文本字符串.结果显示如下

在此输入图像描述

我们检查复选框"设置自定义排序类型功能",网格将按照下一张图片显示的顺序排序

在此输入图像描述

为了实现这种排序,我定义了这个功能

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

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

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

哪里grid$("#list").

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