2011-04-09 62 views
1

我有一個jqgrid其中dataytype是本地的。自動排序對每一列都正常工作。我想知道是否可以根據另一列對不同的列進行排序。 爲了更好地解釋這個,我們假設我有三列OrderNumber,Address,Phone,以及一個名爲State的隱藏列。當點擊Address列時,我實際上想要排序,如果State列是單擊的那一列。jqgrid自定義排序不同列上的本地數據

我試圖做到這一點的onSortCol事件,我想是這樣的:

onSortCol: function (index, iCol, sortorder) { 

    if(index === "Address"){ 
     //CHANGE SORTED COLUMN TO STATE AND MAKE THE SORT    
    } 
}, 

回答

0

如果你在做服務器端排序,你會只是這樣做:

if(sord == "Address"){ 
    sord = "State"; 
} 

有你嘗試爲您的客戶端排序:

onSortCol: function (index, iCol, sortorder) {  
    if(index === "Address"){ 
     index = "State";    
    } 
}, 
+0

是的我試圖做到這一點,但即使您將索引更改爲「狀態」,排序也會通過「地址」進行排序。 – Alex 2011-04-11 15:35:25

5

如果您使用遠程數據(datatype:'json'datatype:'xml')你可以很容易地實現任何種類的排序。所以我想你的意思是在你的問題中使用本地數據的jqGrid。在這種情況下,我建議你使用sorttype參數colModel中定義的函數。

可以定義爲Addresssorttype屬性,它看起來像下面這樣:

sorttype: function(cellValue, rowObject) { 
    return rowObject.State; 
} 

或像這樣的:

sorttype: function(cellValue, rowObject) { 
    return rowObject.State + "_" + cellValue; 
} 

參數cellValue是包含電池,其將在用於比較操作來排序網格。 rowObject是下一個具有cellValue的全行下降的對象。 Returnung作爲cellValue的另一個值來自函數sorttype將遵循將返回值將用於比較操作而不是cellValue

sorttype實施的第一個示例中(見上文),Address列的排序將基於名稱爲State的列的包含完成。在第二個示例中,具有相同狀態的行將按地址進行排序。

你可以看看小演示here。如果您點擊「稅」列,網格將按「id」列進行排序,其中id值將被解釋爲整數。