Datatables中列的自定义(组)排序
我想了解Datatables
中的自定义排序机制。我想要做的是根据其值和其他列的值(conatining组)来进行排序,以便进行分组排序。Datatables中列的自定义(组)排序
要做到这一点,我就翻过排序插件:https://datatables.net/plug-ins/sorting/
只是作为一个例子(可能是另一个),我有一个看看“反了”插件。为了Actvate(启用)它,我说:
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”来达到此目的?
编辑:
只是为了让事情更清楚一点: 假设我有一个包含有关“部门”和“地板”信息/列的表排序时“地板”我喜欢它d分选前进行排序地板的每一个部门
:|部门|地板
|
| IT | 2 |
| IT | 1 |
|销售| 1 |
|销售| 2 |
点击标题后( “地板” - > ASC)
| IT | 1 |
| IT | 2 |
|销售| 1 |
|销售| 2 |
再次点击(降序)
| IT | 2 |
| IT | 1 |
|销售| 2 |
|销售| 1 |
在我那里北京时间组之间没有混合数据(此处部门) - >同一部门的行会彼此相邻
当你正在尝试做你的数据我的GroupWise的分类将建议您使用数据表格“orthagonal data”结合HTML5数据属性
正如你可以在这里阅读(Datatables Website - Orthagonal Data - HTML5)使用自定义属性data-order
应该是你的首选武器。
例如:
你想组department
和floor
但只显示department
给用户。本实施例中应显示您所希望的输出
(在姓细胞的floornumber是可视化权排序的辅助,并且可以被去除)
<table id="myTestTable" class="display">
<thead>
<tr>
<th>Department</th><th>Surname</th>
</tr>
</thead>
<tbody>
<tr>
<td data-order="it 1">IT</td> <td>Daniel (1)</td>
</tr>
<tr>
<td data-order="sales 2">sales</td> <td>Sue (2)</td>
</tr>
<tr>
<td data-order="it 1">IT</td> <td>John (1)</td>
</tr>
<tr>
<td data-order="it 2">IT</td> <td>Mr. Miyagi (2)</td>
</tr>
<tr>
<td data-order="sales 2">sales</td> <td>Mel (2)</td>
</tr>
<tr>
<td data-order="sales 1">sales</td> <td>Marc (1)</td>
</tr>
</tbody>
</table>
<script>
$('#myTestTable').dataTable();
</script>
编辑:
在第一分选10楼及以上的例子将是错误的。这将是1,10,2,3,4等,因为数据表将严格分类字符串。
为了解决这个问题,在datatables网站上有一个排序插件natural sorting。包括此代码并将{ columnDefs: [ { type: 'natural' , targets: 0 } ] }
添加到表定义将会将排序修复为更多human
的方式。
不错的想法,但我想使用点击列类型。即使用您的方法,IT在第11层(数据订单=“it 11”)将在IT位于第2层(“it 2”)之前下单,不是吗? –
是的。在这种情况下,您将不得不合并正方形数据和自定义排序。 – DKSan
任何提示在哪里/如何启动? (顺便说一句,我已经添加了一些更多的信息作为编辑原始问题,使问题更清晰) –
如果您显示两列,您的用户可以通过按shift键并单击标题来排列两列。在这种情况下不需要自定义排序。 – DKSan