【发布时间】:2016-04-28 10:17:48
【问题描述】:
我正在尝试了解Datatables 中的自定义排序机制。我要做的是根据列的值和其他列的值(包含一个组)对列进行排序,以获得按组排序。
为此,我遇到了排序插件:https://datatables.net/plug-ins/sorting/
作为一个例子(可能是另一个),我查看了“anti-the”插件。为了激活它,我添加了:
targets = "_all", type = "anti-the"
到columnDefs
使用过
jQuery.extend( jQuery.fn.dataTableExt.oSort, {
"anti-the-pre": function ( a ) {
console.log("pre");
return a.replace(/^the /i, "");
},
"anti-the-asc": function ( a, b ) {
console.log("asc");
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
},
"anti-the-desc": function ( a, b ) {
console.log("desc");
return ((a < b) ? 1 : ((a > b) ? -1 : 0));
}
} );
计划是调整这三个函数以获得所需的分组排序。
有趣的是,每次单击表格标题(并且重新使用表格)时,控制台都会打印“pre”。我希望“asc”和“desc”也会被打印(以交替顺序),但什么也没打印,为什么?
这是获得所需分组排序结果的正确方法,还是我需要定义自己的“orderDataType”才能达到此目的?
编辑:
只是为了让事情更清楚一点: 假设我有一个表格,其中包含有关“部门”和“楼层”的信息/列。在对“楼层”进行排序时,我希望对每个部门的楼层进行排序
排序前:
|部门|楼层|
|IT|2|
|IT|1|
|销售额|1|
|销售额|2|
点击标题后(“地板”-> asc)
|IT|1|
|IT|2|
|销售额|1|
|销售额|2|
再次点击(描述)
|IT|2|
|IT|1|
|销售额|2|
|销售额|1|
在我拥有的数据中,组之间没有混合(这里:部门)->同一部门的行将彼此相邻
【问题讨论】:
-
如果您同时显示两列,您的用户只需按 shift 并单击标题即可订购两列。在这种情况下不需要自定义排序。
标签: javascript datatables datatables-1.10