DataTables对货币进行排序

时间:2013-09-03 10:09:27

标签: sorting format datatables currency

请帮助解决实例,如何按“34 566.00 ek”格式对货币进行分类。在DataTables脚本中。

这是JSFiddle示例:http://jsfiddle.net/HEDvf/643/

$('#example').dataTable({
   "aoColumns": [
    null,
   ],        
  "aaSorting": [[ 0, "desc" ]],
  "bStateSave": false,
  "iDisplayLength": 50,
});

2 个答案:

答案 0 :(得分:11)

查看非常广泛的数据表文档。在那里,您将找到几乎所有与数据表有关的问题的简单解决方案。例如,有一些小插件函数可以为货币列添加排序支持。

基于你得到的一个例子:

// add sorting methods for currency columns
jQuery.extend(jQuery.fn.dataTableExt.oSort, {
    "currency-pre": function (a) {
        a = (a === "-") ? 0 : a.replace(/[^\d\-\.]/g, "");
        return parseFloat(a);
    },
    "currency-asc": function (a, b) {
        return a - b;
    },
    "currency-desc": function (a, b) {
        return b - a;
    }
});

// initialize datatable and explicitly set the column type to "currency"
$('#example').dataTable({
    "aoColumns": [{"sType": "currency"}],
    "aaSorting": [[0, "desc"]],
    "bStateSave": false,
    "iDisplayLength": 50,
});

文档链接:

排序:http://datatables.net/plug-ins/sorting#currency

数据表还可以自动检测列类型,但是所有不同的格式都会有点复杂。类型检测:http://datatables.net/plug-ins/type-detection#currency

答案 1 :(得分:3)

我没有足够的声誉来为@Gigo的答案添加命令。所以我会将此作为答案发布。

如果您使用欧洲货币格式,则为“。”用作千位分隔符而不是逗号','。因此,排序脚本将无法正常工作,因为1.000,00被解释为ONE point ZERO

要解决此问题,请将正则表达式更改为:

/[^\d\-\,]/g

点变为逗号,现在1.000,00将被解释为ONE THOUSAND point ZERO。