我必须使用Jquery Datatables进行一些自定义排序.我不想为每个自定义排序编写自定义排序函数.
我想定义一个要排序的值,并且如果定义了值,则Datatables会忽略原始列值.
例如:
E 1.111,23
我希望Jquery Datatables以数字方式对此列进行排序111123
.
20-12-1980
我希望Jquery Datatables以数字方式对此列进行排序19801220
.
a string
我希望Jquery Datatables按原始值对此列进行排序a string
.
http://www.datatables.net/plug-ins/sorting有"隐藏标题数字排序",它接近我想要的,但要求我指定这个自定义排序适用于哪一列的每个数据表.我有太多不同大小的数据表,可以在合理的时间内完成.我只想让Datatables总是对这个隐藏的值/ data-*属性进行排序(如果它存在).无需在特定列上进行自定义排序定义.
相关:jQuery DataTables:如何按自定义参数值而不是单元格的内容进行排序?但遗憾的是,没有回答如何简单地通过自定义参数进行排序,而是指向自定义排序脚本.
例如,您可以使用数据顺序attr
<table class="table table-bordered table-hover"> <thead> <tr> <th>Date</th> <th>Count</th> </tr> </thead> <tbody> <?php $count = 0; foreach($users as $user) {?> <tr> <td data-order="<?php echo $count ?>"> <?php echo $user['createdDate']; ?> </td> <td> <?php echo $user['count']; ?> </td> </tr> <?php $count++; }?> <tr> <td data-order="999999999999999999999999999"> <!--always last--> Total </td> <td> <?php echo count($users); ?> </td> </tr>
更多信息HTML5 data-*属性
我找到了一个适合我的简单解决方案,并且不需要太多代码或更改datatables.js.
它与问题的要求非常相似,但并不完全相同.
而不是data-sort
你可以使用HTML注释标签.
<td data-sort="111123">E 1.111,23</td>
变
<td><!-- 000000111123 -->E 1.111,23</td>
通过零填充,int
它们将被分类为a string
.零填充使排序的行为与您期望的一样:将整数从高到低排序.
解决方案适用于日期,整数和字符串.对于日期和整数,您可以使用脚本语言以您希望的方式输出它们(例如:零填充,格式化为yyyy-mm-dd).