我有一个非常常见的用例,我在价格列中显示格式化的价格,例如。“20,000.00”。因此,当我尝试对其进行排序时,它会将其视为字符串并且排序不好:
- 10.00
- 20,000.00
- 5,000.00
我可以让它按数据参数值排序,这将是非格式化的浮点数吗?
与这个问题相关:如何禁用给定列的排序?我正在使用 DataTables 1.9.4。
我有一个非常常见的用例,我在价格列中显示格式化的价格,例如。“20,000.00”。因此,当我尝试对其进行排序时,它会将其视为字符串并且排序不好:
我可以让它按数据参数值排序,这将是非格式化的浮点数吗?
与这个问题相关:如何禁用给定列的排序?我正在使用 DataTables 1.9.4。
使用此页面http://datatables.net/plug-ins/sorting查看您可以添加的所有排序类型。那里有很多并且易于使用。基本上,您需要包含它在每种类型的显示详细信息部分下显示的代码。数据表初始化后需要包含此代码。就我个人而言,因为我在我的网站上使用了很多东西,所以我制作了一个名为 datatables.sorting.js 的单独文件,并在包含数据表之后将其包含在内。这样,我可以根据需要添加尽可能多的各种排序类型。
添加代码后,您可以使用 aoColumns 参数告诉数据表将该排序方法应用于您想要的任何列:
$('#myTable').dataTable({
"aoColumns": [
null,
null,
{ "sType": "formatted-num" }
]
});
http://jsfiddle.net/davidstetler/5Z8fZ/
我添加了用于对格式化数字进行排序的代码,您可以像我一样将其包含在内,也可以将其包含在单独的文件中。
要回答您的第一个问题,您可以使用 DataTables 插件页面上提供的 Formatted Numbers 插件。我会在此处发布代码,但由于它们经常更新,因此我将仅发布链接。
http://datatables.net/plug-ins/type-detection
您有几个选项可以禁用对特定列的排序。您可以采用传统路线并在您的 init 对象中添加一行,例如...
"aoColumns": [
null,null,null,{ "bSortable": false },null,null
]
其中 null 是您不想对其执行任何操作的列,而 bSortable 对象是您想要影响的列。
由于您运行的是 1.9+,因此您可以执行以下操作。
"aoColumnDefs": [
{ "bSortable": false, "aTargets": [ 4 ] }
],
在此示例中,4 是您要禁用排序的列。请记住,第一列是 0,所以这在技术上是第 5 列。