我有一张包含人口编号的大表(5列x 116k行) 我需要对包含总体的列求和,并且此总和随应用的过滤器而变化 例如我可能会在过滤器中输入一个邮政编码,我需要这个特定邮政编码的总数 (我正在使用主过滤器+每列多个过滤器https://datatables.net/examples/api/multi_filter.html)
我尝试使用sum api:https://datatables.net/plug-ins/api/sum()
它有效,但它只给出了可见行的总和 除了在搜索字段中输入内容时滤出的那些行,我怎样才能获得所有行的总和?
我也试过了页脚回调方法https://datatables.net/examples/advanced_init/footer_callback.html
它也有效但问题相同:只有可见行的总和,而不是其他页面。
如果可能的话,我更喜欢使用第二种方法(页脚回调),它只在一个地方,更容易维护imo。
谢谢!
答案 0 :(得分:2)
我终于找到了
您必须在{'search': 'applied'}
.column()
在https://datatables.net/examples/advanced_init/footer_callback.html
中替换
.column( 4, { page: 'current'} )
与
.column( 4, {'search': 'applied'} )
像这样:
// Total over the search
searchTotal = api
.column( 4, {'search': 'applied'} )
.data()
.reduce( function (a, b) {
return intVal(a) + intVal(b);
}, 0 );
答案 1 :(得分:1)
使用"数据表"对所有值求和作为服务器端分页的表,您必须从view all
提供view dropbox
并在查看全部时获取该值。
您可以在this link中找到view all
功能实现。
或强>
提供另一个返回总和的Ajax服务URL,因为数据表的主要目的是以结构良好的形式表示数据,而不是对所有值求和。