我正在尝试用两个不同的列对jqgrid中的列进行排序。例如,我有一个专栏" StoreName"它的排序将由列" d0_key"和" d0_tot_key" (两个整数)。我知道colmodel中的sorttype可用于创建自定义排序,但我没有找到考虑两个列的算法。下面是数据的简单表示。
StoreName d0_key d0_tot_key
92nd Gessner 1 0
92nd Gessner 1 0
Total Sum 1 10
Total Avg 1 20
Annco 2 0
Annco 2 0
Total Sum 2 10
Total Avg 2 20
答案 0 :(得分:3)
版本4.5.0 of the jqGrid added multi-sort support。你应该可以这样做:
请确保您已启用multiSort
:
$('#gridId').jqGrid({
...
multiSort: true,
...
});
这将使您能够单击多个标题。如果您想以编程方式排序,这应该有效:
$('#gridId')
.jqGrid('sortGrid', 'd0_key', true, 'asc')
.jqGrid('sortGrid', 'd0_tot_key', true, 'asc');
您可能会对列模型对象感兴趣的其他其他属性感兴趣,例如firstsortorder
("asc"
/ "desc"
)和sortable
( true
/ false
)。
此外,4.5.1和4.5.4中有一些错误修复用于多重排序,所以我会继续下载最新版本。
答案 1 :(得分:2)
如果您需要按StoreName
列进行排序,请根据“d0_key”和“d0_tot_key”列中的值进行排序,您应该将sorttype
定义为函数 StoreName
列。StoreName
。在按sorttype
列排序之前,将调用StoreName
列。在确定订单或排序网格期间,函数返回的值将使用而不是 d0_key * 1000 + d0_tot_key
列中的值。因此,您可以构建一些符合您要求的{
name: "StoreName",
sorttype: function (cell, obj) {
return parseInt(obj.d0_key) * 1000 + parseInt(obj.d0_tot_key);
},
...
}
函数。如果我理解你的正确,那么它可以是关于以下的
sorttype
The answer,this one和another one提供了使用{{1}}作为功能的示例。 This one在我看来,大部分都符合您的要求。