我正在使用jQuery DataTables来创建表。我有一个金钱领域,我正在总结,一切都工作得很好,除了一个问题。当我使用搜索过滤器时,它给了我所有行的总计。我想要的只是过滤器返回的行的总数。这是我的代码:
var table = $('#tblAdvertising').DataTable({
"iDisplayLength": 10,
"bDestroy": true,
"bLengthChange": false,
"columnDefs": [
{ "visible": false, "targets": 0 }
],
"drawCallback": function (settings) {
var api = this.api();
var rows = api.rows({ page: 'current' }).nodes();
var last = null;
api.column(0, { page: 'current' }).data().each(function (group, i) {
if (last !== group) {
$(rows).eq(i).before(
'<tr class="group"><td colspan="5">' + group + '</td></tr>'
);
last = group;
}
});
},
"footerCallback": function(row, data, start, end, display) {
var api = this.api();
var intVal = function(i) {
return typeof i === 'string' ?
i.replace(/[\$,]/g, '') * 1 :
typeof i === 'number' ?
i : 0;
}
var total = api.column(3).data().reduce(function(a, b) {
return intVal(a) + intVal(b);
});
var pageTotal = api.column(3, { page: 'current' }).data().reduce(function (a, b) {
return intVal(a) + intVal(b);
});
$(api.column(3).footer()).html('$' + pageTotal.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,') + '<hr style="margin: 0" />$' + total.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,'));
}
});
问题很可能出现在以var total =
开头的行中。我想我需要做var total = api.column(3).data().filteredData()...
之类的事情。当然,这不会起作用,但任何帮助都会受到赞赏!
答案 0 :(得分:2)
在最后一行,您使用column(3)
的地方也会传入{'search': 'applied'}
(a selector-modifier
)作为第二个参数。
var total = api.column(3, {'search': 'applied'}).data().reduce(function(a, b) {