jqGrid: 禁用排序功能

21

我正在使用 addRowData 手动向 jqGrid 中添加行,这些行的顺序必须得到保留。

但是,在分页时,所有行都会重新排序,以按照网格的第一个可见列排序。

我已经关闭了所有我能找到的文档中记录的排序选项。

如何防止所有排序并在所有页面间维护行的顺序?

代码

正在使用的初始化代码:

$("#grid").jqGrid({
  autowidth: false,
  cmTemplate: {sortable: false},
  colModel: config.gridColumnModel
  height: 600,
  pager: "#aggregationToolbar",
  sortable: false,
  shrinkToFit: false
  url: "fetch",
  viewrecords: false
});

使用默认设置(由上面初始化代码中的选项覆盖):

$.extend($.jgrid.defaults, {
  altClass: "altRow",
  altRows: true,
  autowidth: true,
  cmTemplate: {
    align: "center",
    title: false
  },
  datatype: "local",
  gridview: true,
  height: "auto",
  hidegrid: false,
  jsonReader: {
    page: function(obj) { return 1; },
    records: function(obj) { return obj.length; },
    repeatitems: false,
    root: "objects",
    total: function(obj) { return 1; }
  },
  loadonce: true,
  rowList: [50, 100, 250],
  rowNum: 100,
  sortable: true,
  toppager: true,
  viewrecords: true
});

jqGrid的参数sortname代表什么值?为什么需要使用addRowData?你使用哪种datetype?最好附上你所使用的代码。 - Oleg
"sortname" 没有被使用。由于需要进行一些必要的后处理,因此使用了 "addRowData"。"datatype" 是本地的。 - Donald T
在您发布的代码示例中,datatype 未被定义,因此将使用 datatype: 'xml'。您使用任何默认设置吗?使用哪个?如果使用 'local' 数据类型,您可以使用 jqGrid 的 data 参数,它的工作速度更快,支持所有本地功能,如分页、排序和过滤。是否可以包括一个带有测试数据的小演示,以便重现您的问题? - Oleg
你能否包含你使用的 config.gridColumnModel 的定义?你能否包含测试数据(至少两行)?知道你使用哪个 rowid 可能很重要。这些行有 id 属性吗? - Oleg
2
您能否详细说明一下“后处理”是使用addRowData和可能使用datatype:'local'的主要原因?我怀疑您尝试通过错误的方式解决原始问题。您是否从服务器加载数据并需要在填充网格之前修改从服务器接收到的数据?在这种情况下,有更有效的方法,例如使用datatype:'local',无论如何,在99%的情况下都不需要使用addRowData - Oleg
2个回答

22

根据需要的jqGrid版本,您需要明确地在每个列上设置sortable: false来禁用排序...

参考文献请见这里这里这里


21

对于支持cmTemplate的版本,您可以使用:

cmTemplate: { sortable: false }


cmTemplate: 定义了一组属性,这些属性将覆盖colModel中的默认值。例如,如果您想使所有列都不可排序,则只需要在此处指定一个属性,而不是在colModel中的所有列中指定它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接