jQuery DataTables:如何按自定义参数值而不是单元格的内容进行排序?

时间:2012-12-08 18:52:59

标签: javascript jquery html datatable datatables

我有一个非常常见的用例,我在价格列中显示格式化价格,例如。 “20,000.00”。因此,当我尝试对其进行排序时,它会将其视为字符串并且不能很好地排序:

  • 10.00
  • 20,000.00
  • 5,000.00

我可以这样做,以便按数据参数值排序,这是非格式化的浮点数吗?

与此问题相关:如何禁用给定列的排序?我正在使用DataTables 1.9.4。

2 个答案:

答案 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/

我添加了用于排序格式化数字的代码,您可以像我一样包含这些代码,或者您可以将其包含在单独的文件中。