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

标签 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' };
        }
        });

但不起作用。

最佳答案

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

我做了 the new demo供您演示该功能。开始时,网格将按“客户端”列排序,包含的列将被解释为文本字符串。结果显示如下

enter image description here

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

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;
    }
}

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

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

其中 grid$("#list")

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

关于javascript - 生成 jqgrid 后如何对特定列实现自定义排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5294535/

相关文章:

Javascript for 循环缺少中间部分 : error or advanced?

jquery - jqgrid刷新网格按钮不传递过滤器

jquery - jqgrid 错误 - b.jgrid.jqID 不是函数

javascript - Jqgrid 显示第 1 页,共 0 页为空

javascript - Rails - jQuery 和 javascript 之间的冲突

javascript - 在 Visual Studio Code 中使用react智能感知

javascript - 有没有比这个 javascript 更好的方法来循环点击一系列类

c# - 在 ASP.NET MVC 中执行 ListView 的最佳方法?

javascript - jqGrid。第一次单击列跨度调整器将列宽设置为默认计算值