datatables使用分页对每行求和

时间:2016-09-02 10:24:43

标签: datatables

我有一张包含人口编号的大表(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。

谢谢!

2 个答案:

答案 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,因为数据表的主要目的是以结构良好的形式表示数据,而不是对所有值求和。