我必须使用Jquery Datatables进行一些自定义排序 . 我不想为每个自定义排序编写自定义排序函数 .
我想定义一个要排序的值,并且如果定义了值,则Datatables会忽略原始列值 .
例如:
<td data-sort="111123">E 1.111,23</td>
我希望Jquery Datatables在 111123
上以数字方式对此列进行排序 .
<td data-sort="19801220">20-12-1980</td>
我希望Jquery Datatables在 19801220
上以数字方式对此列进行排序 .
<td>a string</td>
我希望Jquery Datatables按原始值 a string
对此列进行排序 .
http://www.datatables.net/plug-ins/sorting有"Hidden title numeric sorting",它接近我想要的,但要求我为每个数据表指定此自定义排序应用于哪一列 . 我有太多不同大小的数据表,可以在合理的时间内完成 . 我只想让Datatables总是对这个隐藏的值/ data- *属性进行排序(如果它存在) . 无需在特定列上进行自定义排序定义 .
相关:jQuery DataTables: how to sort by custom parameter value rather than the content of the cell?但遗憾的是,没有回答如何仅通过自定义参数进行排序,而是指向自定义排序脚本的指针 .
2 回答
例如,您可以使用数据顺序attr
更多信息HTML5 data-* attributes
我找到了一个适合我的简单解决方案,并且不需要太多代码或更改datatables.js .
它与问题的要求非常相似,但并不完全相同 .
您可以使用HTML注释标记代替
data-sort
.<td data-sort="111123">E 1.111,23</td>
变
<td><!-- 000000111123 -->E 1.111,23</td>
通过零填充
int
,它们将被排序为string
. 零填充使排序的行为与您期望的一样:将整数从高到低排序 .解决方案适用于日期,整数和字符串 . 对于日期和整数,您可以使用脚本语言以您希望的方式输出它们(例如:零填充,格式化为yyyy-mm-dd) .