Как добавить нумерацию страниц после каждой группы в jQuery Datatable? - PullRequest
1 голос
/ 03 июля 2019

Работа с таблицами данных, и все кажется великолепным.Я использую 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] } ],
      } );

1 Ответ

0 голосов
/ 04 июля 2019

После длительного изучения функций Datatable, я нашел решение моей проблемы.

Параметр строк в startRender и endRender покрывает только те строки, которые отображаются на текущей странице.Чтобы вычислить все строки, нам нужно будет использовать 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...