我有一个jqgrid,其中dataytype是本地的。自动排序适用于每列。我想知道是否可以根据另一列对不同的列进行排序。
为了更好地解释这一点,假设我有三列OrderNumber
,Address
,Phone
和一个名为State
的隐藏列。点击Address
列后,我实际上想要排序,如果State
列是单击的那一列。
我正试图在onSortCol
事件上执行此操作,我想要类似的内容:
onSortCol: function (index, iCol, sortorder) {
if(index === "Address"){
//CHANGE SORTED COLUMN TO STATE AND MAKE THE SORT
}
},
答案 0 :(得分:6)
如果使用远程数据(datatype:'json'
或datatype:'xml'
),则可以非常轻松地实现任何类型的排序。所以我想你的意思是jqGrid与你的问题中的本地数据。在这种情况下,我建议您在定义为函数的sorttype
内使用colModel
参数。
您可以为Address
列定义sorttype
属性,如下所示:
sorttype: function(cellValue, rowObject) {
return rowObject.State;
}
或者喜欢这个:
sorttype: function(cellValue, rowObject) {
return rowObject.State + "_" + cellValue;
}
参数cellValue
是包含在比较操作中用于对网格进行排序的单元格。 rowObject
是对象,它代表具有cellValue
的整行。从函数cellValue
返回另一个值为sorttype
的值将跟随已撤回的值将用于比较操作而不是cellValue
。
在sorttype
实施的第一个示例中(见上文),Address
列的排序将根据名称为State
的列的包含进行。在第二个示例中,具有相同状态的行将按地址进行另外排序。
您可以查看小型演示here。如果单击“Tax”列,网格将按“id”列排序,其中id值将被解释为整数。
答案 1 :(得分:0)
如果您正在进行服务器端排序,您只需执行此操作:
if(sord == "Address"){
sord = "State";
}
您是否尝试过为客户端排序做同样的事情:
onSortCol: function (index, iCol, sortorder) {
if(index === "Address"){
index = "State";
}
},