【问题标题】:How to get searched rows from Datatables at API function call context如何在 API 函数调用上下文中从数据表中获取搜索的行
【发布时间】: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


【解决方案1】:

老实说,'search' : 'applied' 是你最好的选择,尤其是当你进入分页时。如果你真的想在你的 sum() 函数中添加一些东西,你可以看看这个以获得其他想法:Retrieving row data after filtering JQuery Datatables

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多