使用JQuery数据表,特别是下面的函数来对特定列中的总数求和
footerCallback: function ( row, data, start, end, display ) {
var api = this.api();
// Remove the formatting to get integer data for summation
var intVal = function ( i ) {
return typeof i === 'string' ?
i.replace(/[\$,]/g, '')*1 :
typeof i === 'number' ?
i : 0;
};
var i;
for (i = 27; i <=122; i++) {
if (api.column(i).data().length){
var total = api.column( i ).data().reduce( function (a, b) {
return intVal(a) + intVal(b);
})
}
else {
total = 0
};
// Update footer
$( api.column(i).footer() ).html(total);
}
},
到目前为止一切顺利,总计显示。
但是,当我搜索带有table.columns(12).search('No',true,false).draw();
之类的列时,页脚不会更新。
我读了https://datatables.net/forums/discussion/41651/should-footercallback-be-called-when-clearing-a-search-filter,它说被调用draw(),它应该得到更新,但它没有更新
有什么建议吗?
答案 0 :(得分:1)
您需要为所有selector-modifier
API方法调用指定第二个参数column()
,并在检索列数据时使用{ search:'applied' }
应用搜索。默认情况下,使用column()
API方法时,DataTables不应用搜索。
例如:
var data = api.column(i, { search:'applied' }).data();
if (data.length){
var total = data.reduce( function (a, b) {
return intVal(a) + intVal(b);
});
} else {
total = 0;
}