3

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

  • 10.00
  • 20,000.00
  • 5,000.00

我可以让它按数据参数值排序,这将是非格式化的浮点数吗?

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

4

2 回答 2

3

使用此页面http://datatables.net/plug-ins/sorting查看您可以添加的所有排序类型。那里有很多并且易于使用。基本上,您需要包含它在每种类型的显示详细信息部分下显示的代码。数据表初始化后需要包含此代码。就我个人而言,因为我在我的网站上使用了很多东西,所以我制作了一个名为 datatables.sorting.js 的单独文件,并在包含数据表之后将其包含在内。这样,我可以根据需要添加尽可能多的各种排序类型。

添加代码后,您可以使用 aoColumns 参数告诉数据表将该排序方法应用于您想要的任何列:

$('#myTable').dataTable({
"aoColumns": [
            null,
            null,
            { "sType": "formatted-num" }
        ]
});

http://jsfiddle.net/davidstetler/5Z8fZ/

我添加了用于对格式化数字进行排序的代码,您可以像我一样将其包含在内,也可以将其包含在单独的文件中。

于 2012-12-09T09:40:11.980 回答
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 列。

于 2012-12-08T19:04:12.990 回答