jqGrid分组 - 在页面导航上停用客户端排序

时间:2012-06-11 09:36:22

标签: jquery jqgrid

我正在使用带有 loadOnce:true 的网格,以便只向服务器发出一个查询。 数据在服务器端排序(多列排序)。客户端禁用排序。

在激活分组功能之前,导航工作正常。

通过激活分组功能,第一页就可以了。但是当我使用导航按钮转到下一页时,数据会根据分组列在客户端进行排序(即使使用 groupDataSorted:true )。

rowTotal: 10000,
gridview: true,
scroll: false, 
loadonce: true,

pgbuttons: true,
pginput: true,
rowNum: 100,
rowList: '',
datatype: 'json',
mtype: 'GET',

grouping: true,
groupingView : { 
      groupField : ['prodNo'],
      groupSummary: [true],
      groupColumnShow: [false],           
      groupText: ['({1})'],
      showSummaryOnHide: true,
      groupDataSorted : true,
      groupCollapse: false
    },
jsonReader: {root: 'list', userdata : 'list'},
url:'...'

我的情况有点特殊,因为我根据'name'和'date'列对服务器端的数据进行排序,但是根据另一个'prodNo'列对行进行分组。 但是我不明白为什么在页面导航上进行排序。

有没有办法在页面导航上禁用此客户端排序?

提前致谢

1 个答案:

答案 0 :(得分:4)

如果您使用loadonce: true并且用户点击“下一页”按钮,则grindexes会使用本地数据(它是{{1}的值用于在index中进行分组的列的属性。因此,解决问题的最简单方法是在groupField列中实现自定义排序。

您可以先尝试将自定义排序

添加到'prodNo'列的定义中
prodNo

在排序本地数据期间将调用函数sorttype: function () { return 1; // any constant value } 。如果它返回与上例相同的结果,则所有数据都将被解释为相同,我希望不会进行额外的排序。

如果由于某种原因这种方法不起作用,你可以实现另一种排序

sorttype

例如,如果您希望根据其他列的“名称”和“日期”对本地数据进行排序,则可以从“prodNo”列中的sorttype: function (cellValus, rowData) { ... } 返回值

sorttype