我正在使用带有.sum()插件选项的DataTables 1.10.11。
如果列是数字,我可以得到总和和总计。我的问题是很多列已被渲染为超链接以允许向下钻取。当我总结这些时,结果是南。
任何人都有任何想法如何解决这个问题。
以下代码适用于第13列,因为这不会呈现。第3-12列失败。
$('#tblDebtors').dataTable({
"autoWidth":false
, "drawCallback": function() {
var api = this.api();
// Total over all pages
var total = api.column(13).data().sum();
$(api.column(13).footer()).html(fncFmtNbr(total,2,"Y","Y"));
}
, "footer": true
, "info":false
, "JQueryUI":true
, "ordering":true
, "paging":false
, "scrollY":"470px"
, "scrollX":"1485px"
, "scrollCollapse":true
, "columnDefs": [
{ className: "Left", "targets": [ 0,1 ] }
, { className: "Center", "targets": [ 2 ] }
, { className: "Right", "targets": [ 3,4,5,6,7,8,9,10,11,12,13 ] }
, {"targets": 3,
"data": null,
"render": function ( data, type, row ) {
return '<a id="href_Current_'+row[0]+'" href="#">'+row[3]+'</a>';
}
}
, {"targets": 4,
"data": null,
"render": function ( data, type, row ) {
return '<a id="href_Pd1_'+row[0]+'" href="#">'+row[4]+'</a>';
}
}
, {"targets": 5,
"data": null,
"render": function ( data, type, row ) {
return '<a id="href_Pd2_'+row[0]+'" href="#">'+row[5]+'</a>';
}
}
, {"targets": 6,
"data": null,
"render": function ( data, type, row ) {
return '<a id="href_Pd3_'+row[0]+'" href="#">'+row[6]+'</a>';
}
}
, {"targets": 7,
"data": null,
"render": function ( data, type, row ) {
return '<a id="href_Pd4_'+row[0]+'" href="#">'+row[7]+'</a>';
}
}
, {"targets": 8,
"data": null,
"render": function ( data, type, row ) {
return '<a id="href_Pd5_'+row[0]+'" href="#">'+row[8]+'</a>';
}
}
, {"targets": 9,
"data": null,
"render": function ( data, type, row ) {
return '<a id="href_Pd6_'+row[0]+'" href="#">'+row[9]+'</a>';
}
}
, {"targets": 10,
"data": null,
"render": function ( data, type, row ) {
return '<a id="href_Pd7_'+row[0]+'" href="#">'+row[10]+'</a>';
}
}
, {"targets": 11,
"data": null,
"render": function ( data, type, row ) {
return '<a id="href_Older_'+row[0]+'" href="#">'+row[11]+'</a>';
}
}
, {"targets": 12,
"data": null,
"render": function ( data, type, row ) {
return '<a id="href_Total_'+row[0]+'" href="#">'+row[12]+'</a>';
}
}
]
});
答案 0 :(得分:0)
我猜你使用的是像this这样的东西,如果是这样的改变你的用例:
jQuery.fn.dataTable.Api.register('sum()', function (){
return this.flatten().reduce(function(a, b){
if (typeof a === 'string') {
a = a.text().replace(/[^\d.-]/g, '') * 1;
}
if (typeof b === 'string') {
b = b.text().replace(/[^\d.-]/g, '') * 1;
}
return a + b;
}, 0);
});
请注意,如果没有JSFiddle示例,很难测试这种方法,但基本上我们是在锚点内的文本之后。我可以用十进制基数解析它,或者简单地做一个~~
...
希望有所帮助