数据表 - 将其中一列格式化为货币

时间:2017-04-21 14:53:12

标签: sorting datatables formatting

我有一个带标题的简单表格,我正在使用DataTables插件:

$('#uc-dashboard-top-customers .uc-dashboard-sortable').dataTable({
  'aaSorting': [[1, "desc"]],
  'sPaginationType': 'full_numbers'
});

在第二列中,我有124.012, 9, 8.15, 16.5048之类的数值,依此类推。现在我需要按数值对该列进行排序,但将它们格式化为货币,例如1224,21 €。我可以格式化值服务器端,但随后它将被Datatables排序为字符串。

有没有办法为特定列定义格式?

3 个答案:

答案 0 :(得分:2)

这可以让您了解如何初始化数据表。你需要根据需要调整它,但它肯定会让你走上正确的轨道。

$('#uc-dashboard-top-customers .uc-dashboard-sortable').dataTable({
  'aaSorting': [[1, "desc"]],
  'sPaginationType': 'full_numbers',
    columns:   
        [{  
            data: "Field1",
            type: "date",
            width: "10%"
        }, {  
            data: "Field2",
            width: "10%"
        }, {  
            data: "Field3",
            type: "html",
            width: "10%"
        }, {  
            data: "Field4",
            width: "30%"
        }, {  
            data: "Field5",
            width: "10%"
        }, {  
            data: "Field6",
            render: $.fn.dataTable.render.number(",", ".", 2),
            width: "10%"
        }]
});

答案 1 :(得分:0)

为什么不使用像currency这样的排序插件?基本上它只会从字符串中提取浮点值,适用于任何种类的货币格式:

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;
    }
} );

var table = $('#example').DataTable({
  columnDefs : [
   { targets: 0, type: 'currency' }
  ]
})  

演示 - >的 http://jsfiddle.net/zfkcj8g2/

无论dataTable如何初始化,排序插件都可以工作,即DOM表,JSON /数组源或服务器端。

答案 2 :(得分:0)

如果要格式化数据表中的计算字段

我有很多财务应用程序,并且喜欢使用“数字” JavaScript库:

<script src="//cdnjs.cloudflare.com/ajax/libs/numeral.js/2.0.6/numeral.min.js"></script>

这是在格式化为货币之前的计算列:

{ 
  "data": null,                                                         
  "render": function(data,type,row) { return (data["Revenue"] - data["Expenses"]) }
} 

以下是使用数字库计算出的列格式:

{ 
"data": null, 
 "render": function(data,type,row)
   { 
    return (numeral(data["Revenue"] - data["Expenses"]).format('$0,0.00'))
   }
}