【发布时间】:2017-11-19 10:02:55
【问题描述】:
这个问题的 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
【问题讨论】:
-
老实说,'search' : 'applied' 是你最好的选择,尤其是当你进入分页时。如果你真的想在 sum() 函数中添加一些东西,你可以看看这个以获得其他想法:stackoverflow.com/questions/12915988/…
-
我同意你的看法@Woodrow。如果您想将此作为答案...
标签: javascript datatables