2012-06-11 33 views
2

我正在使用loadOnce:true的網格,以便只有一個查詢到服務器。 數據在服務器端進行分類(多列排序)。排序在客戶端被禁用。jqGrid分組 - 在頁面導航上取消激活客戶端排序

在激活分組功能之前,導航工作正常。

通過激活分組功能,第一頁即可。但是當我用導航按鈕進入下一頁時,數據在客戶端根據分組列排序(即使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」列排序在服務器端的數據,但分組行。 但我不明白爲什麼排序在頁面導航上完成。

有沒有辦法在頁面導航上禁用此客戶端排序?

在此先感謝

+0

版本的jqGrid的:3.8.2 – Samuel

回答

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; 
} 
+0

添加「sorttype:函數(){返回1;}」如你所說,足以解決我的問題。留言Merci!也感謝解釋。 – Samuel

+0

@Samuel:不客氣! – Oleg

+1

Hey @Oleg'sorttype:function(){return 1; }解決了導航排序的問題。但點擊我日期欄的標題什麼也不做。我嘗試過'sorttype:function(cellValue,rowData){return cellValue}'.cellValue是一個格式與日期格式相同的日期。做到這一點,排序正在發生,但以奇怪的順序發生,並且也在破壞導航排序。 – Jaikrat