如何在 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 函数调用上下文中从数据表中获取搜索的行的主要内容,如果未能解决你的问题,请参考以下文章
在 React-redux 和 Redux-Thunk 中从 API 获取数据的问题