我有一个带标题的简单表格,我正在使用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排序为字符串。
有没有办法为特定列定义格式?
答案 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'))
}
}