温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - How to add pagination after each group in jQuery Datatable?
datatable jquery

其他 - 如何在jQuery Datatable中的每个组之后添加分页?

发布于 2020-03-27 10:34:58

处理数据表,一切似乎都很棒。我正在使用rowGroup,效果很好,并向我正确显示了分组。还使用startRender查找和显示组虎牙计算。

我的问题是分页会影响我的计算;如果显示长度设置为10,并且一个组有17行,则在开始渲染计算中将给出第一页中前10行的计算结果,下一页中剩余的7条计算结果。

1)我想无论页面如何进行计算,都需要在该组下的所有17行中进行计算

2)或者我需要根据组调整页面。即第1页的第1组,第2页的第2组,依此类推。

var data_table = $('#myTable').DataTable( {

 order: [[0, 'asc'], [1, 'asc']],
 "displayLength": 25,
 rowGroup:{
  dataSrc: [0, 1],
  startRender: function ( rows, group ) {

   var clickTotal = rows
   .data()
   .pluck(3)
   .reduce( function (a, b) {
    return parseInt(a) + parseInt(b);
  });

            var ageCTR = rows
            .data()
            .pluck(5)
            .reduce( function (a, b) {
             return parseInt(a) + parseInt(b);
               });

            return $('<tr>')
            .append( '<td>'+group+'</td>' )
            .append( '<td>'+clickTotal+'</td>' )                    
            .append( '<td>'+ageCTR +'</td></tr>' );

          }
        },
        columnDefs: [ {
          targets: [ 0, 1,5 ],
          visible: false
        },
        { orderable: false, targets: [2,3,4] } ],
      } );

查看更多

查看更多

提问者
Sangeetha
被浏览
151
Sangeetha 2019-07-04 17:32

在研究了Datatable功能很长时间之后,找到了解决我的问题的方法。

startRender和endRender中的rows参数仅覆盖当前页面上显示的那些行。要计算所有行,我们将需要使用filter()来基于组过滤表并计算总和。这是我更新的代码。希望有人会有所帮助。

[因为我基于第0列和第1列使用了多级分组,所以这两列都与过滤器函数中的组值进行了比较。]

var clickTotal = $('#myTable').DataTable()
     .rows()
     .data()
     .filter( function ( data, index ) {

       return (data[0] == group || data[1] == group) ? true : false;
     } )
     .pluck(5)
     .sum();