jqgrid:基于两列排序
jqgrid: Sort based on two columns
我正在尝试按两个不同的列对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
jqGrid 的 4.5.0 版本添加了多排序支持。你应该能够做这样的事情:
只需确保您已打开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 中有一些用于多重排序的错误修复,所以我会继续下载最新版本。
如果您需要按列排序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
作为函数的用法示例。在我看来,这个最接近你的要求。
相关文章:
- 带组的两列html表
- 单个交叉筛选器维度和两列上的组
- 使用 php 将类别和子类别显示为两列
- 将网格视图的两列相乘,并将其显示在新列中
- Angular ng sortable-如果我在一个栏中添加了一个搜索框,则拖放在两列之间无法正常工作
- 将列表拆分为两列.列表没有't具有块,但是需要在最接近的<p>标签
- 在两列中动态显示产品
- 将单个服务逻辑应用于两个类似的按钮
- 两列全高布局展开以包含内容
- 如何使用AngularJS而不是在查询子句中根据两列的差异对表进行排序
- 添加混合 javascript 函数,使内容淡入列内的另一个内容/使其适用于两个单独的列
- jqgrid:基于两列排序
- jQuery可排序列表分为两列
- 基于两列之间的计算对jquery数据表进行排序
- 两列jQuery.有顺序的可排序列表
- Tiny Table,如何基于两列进行初始排序
- 排序集合与两列首先由一列,然后由第二列在Backbone.js
- 表在两列上排序
- 使用数据表按两列排序(不能读取property ' style '未定义)
- 如何按两列对 jquery-datatable 进行排序