如何在 API 函数调用上下文中从数据表中获取搜索的行

Posted

技术标签:

【中文标题】如何在 API 函数调用上下文中从数据表中获取搜索的行【英文标题】:How to get searched rows from Datatables at API function call context 【发布时间】: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() 函数中添加一些东西,你可以看看这个以获得其他想法:***.com/questions/12915988/… 我同意你的看法@Woodrow。如果您想将此作为答案... 【参考方案1】:

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

【讨论】:

以上是关于如何在 API 函数调用上下文中从数据表中获取搜索的行的主要内容,如果未能解决你的问题,请参考以下文章

数据不会在颤振中从 API 加载。我该如何解决?

在 React-redux 和 Redux-Thunk 中从 API 获取数据的问题

如何在spring boot中从同一个应用程序调用另一个api

如何测试调用api的函数?

如何在 C#/Python 中从 DLL 调用函数

如何在我的颤振应用程序中从 bing web search apiv7 获取图像