【问题标题】:How do I implement custom sort to a specific column after jqgrid has been generated?生成 jqgrid 后如何实现对特定列的自定义排序?
【发布时间】:2011-07-14 18:02:16
【问题描述】:

在使用 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' };
        }
        });

但不起作用。

【问题讨论】:

  • (我已经将 jqgrid 版本升级到了 3.8.2 版本,希望能正常工作)

标签: javascript jqgrid


【解决方案1】:

sorttype 作为函数的用法可用于 jqGrid 的任何本地数据类型,或者在使用带有“远程”数据类型“json”或“xml”的 loadonce:truejqGrid 参数的情况下。如果需要,您可以动态更改任何列的sorttype

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

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

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

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"

【讨论】:

  • 我使用的是远程 json 数据类型,它不能加载一次(网格有时需要刷新)。基本上我想检查 null 并且单元格数据是 html。我试过这个......但每当我点击排序标题文本时,它仍然试图让它工作。 annotCustomSort = function (cell, rowObject) { return parseInt(cell.length); } annotCol = grid.getGridParam("colModel")[2]; annotCol.sorttype = annotCustomSort;
  • @Brandon:在sorttype 之前我是如何写给你的“远程”数据类型“json”或“xml”。对于没有 loadonce:true 的远程数据类型,它将被忽略。对于远程数据类型,服务器完全负责数据排序。服务器接收参数sidxsord,它们定义了所需的排序。所以在你的情况下,排序的任何实现都必须在服务器上完成,否则你必须使用loadonce:true
  • @Oleg 为什么对于在服务器上完成的默认类型的单元格值,它能够正确检查 null (例如,我的主题列工作正常),但是对于具有 html 值的单元格,默认排序不按 null 排序。那么什么是最好的排序类型,我需要使用自定义排序类型吗?
  • @Brandon:对不起,我真的不明白你的意思。 sorttype 仅适用于本地数据类型,我只能在 addLocalData 方法中找到它。如果在您的情况下,函数sorttype 将使用远程数据类型调用它一定是一个错误。为什么要对sorttype 和远程数据类型进行任何实验?为什么不对服务器上包含所有NULL值的数据进行完整排序应该怎么做?
  • @Oleg oic... 我认为 sorttype 可以根据数据源通过前端或后端实现。我不是在试验...我只是想通过标题单击排序对具有 null/not null html 值的列进行排序,但它不起作用。
猜你喜欢
  • 2016-09-18
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 2019-12-02
  • 1970-01-01
  • 2012-09-15
  • 2011-10-30
  • 1970-01-01
相关资源
最近更新 更多