2

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

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

通过激活分组功能,第一页就OK了。但是当我使用导航按钮转到下一页时,数据会根据分组列在客户端进行排序(即使使用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:'...'

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

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

提前致谢

4

1 回答 1

4

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

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

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

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

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

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

例如,如果您希望本地数据将根据其他列“名称”和“日期”进行排序,您可以从sorttype“prodNo”列中返回类似的值

sorttype: function (cellValus, rowData) {
    // probably the data need be converted in the sortable form yyyy-mm-dd
    return rowData.name + '_' + rowData.data;
}
于 2012-06-11T10:10:29.633 回答