这个问题的JSFiddle:http://jsfiddle.net/nhg5ej4s/
我使用1.10.15版本的Datatables。
我在API中注册了这个sum()
函数:
$.fn.dataTable.Api.register('sum()', function () {
var data = this.flatten().toArray();
return data.reduce(function (a, b) {
return (a * 1) + (b * 1); // cast strings
}, 0);
});
当我需要使用此功能时,例如,在页面中更新总计的drawCallback
选项中(有关上下文,请参阅JSFiddle):
var table = $('#example').DataTable({
drawCallback: function (settings) {
var api = this.api();
$(api.column(5).footer()).html('Total: ' + api.column(5).data().sum());
}
});
该功能有效,但是当我使用任何搜索对表格应用过滤器时,传递给sum()
的值会占用所有行,而不是搜索过滤的行。
有一种方法可以识别sum()
函数中的搜索上下文吗?
PS:在撰写此问题时,我意识到我可以在列调用中传递一个选项,该选项只会过滤搜索到的行:api().column(5, {'search': 'applied'}).data().sum()
但是我决定让问题知道是否有一种方法可以在sum()
代码中执行此操作。 JSFidlle with this update
答案 0 :(得分:1)
老实说,'搜索':'应用'是你最好的选择,特别是如果你进入分页。如果您真的想在sum()函数中添加一些内容,可以查看其他想法:Retrieving row data after filtering JQuery Datatables