我有一个非常常见的用例,我在价格列中显示格式化价格,例如。 “20,000.00”。因此,当我尝试对其进行排序时,它会将其视为字符串并且不能很好地排序:
我可以这样做,以便按数据参数值排序,这是非格式化的浮点数吗?
与此问题相关:如何禁用给定列的排序?我正在使用DataTables 1.9.4。
答案 0 :(得分:3)
要回答您的第一个问题,您可以使用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列。
答案 1 :(得分:3)
使用此页面http://datatables.net/plug-ins/sorting查看您可以添加的所有排序类型。有很多,很容易使用。基本上,您需要在每种类型的show details部分中包含它显示的代码段。数据表初始化后需要包含此代码。就个人而言,因为我在我的网站上使用了很多,所以我创建了一个名为datatables.sorting.js的单独文件,并且在包含数据表之后我将其包括在内。这样我就可以根据需要添加各种排序类型。
添加代码后,您可以使用aoColumns参数告诉数据表在您想要的任何列上应用该排序方法:
$('#myTable').dataTable({
"aoColumns": [
null,
null,
{ "sType": "formatted-num" }
]
});
http://jsfiddle.net/davidstetler/5Z8fZ/
我添加了用于排序格式化数字的代码,您可以像我一样包含这些代码,或者您可以将其包含在单独的文件中。