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

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

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

通过激活分组function,第一页就可以了。 但是当我使用导航按钮转到下一页时,数据将根据分组列在客户端进行排序(即使使用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’列对行进行分组。 但是我不明白为什么在页面导航上完成排序。

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

提前致谢

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

您可以先尝试将自定义排序添加到’prodNo’列的定义中

 sorttype: function () { return 1; // any constant value } 

在排序本地数据期间将调用函数sorttype 。 如果它返回与上例相同的结果,则所有数据都将被解释为相同,我希望不会进行额外的排序。

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

 sorttype: function (cellValus, rowData) { ... } 

例如,如果您希望基于其他列’name’和’date’对本地数据进行排序,您可以从’prodNo’列中的sorttype返回值,如

 sorttype: function (cellValus, rowData) { // probably the data need be converted in the sortable form yyyy-mm-dd return rowData.name + '_' + rowData.data; }