Итого в таблице с нумерацией страниц

У меня проблема с Пентахо CDE. Я хотел бы добавить в компонент таблицы строку с числовым столбцом, но код, который я нашел, работает только с одной страницей таблицы. Когда я установил Pagination на True, итоговое значение рассчитывается только для первой страницы. Я хочу достичь значения для всех строк независимо от количества страниц.

Вот код:

function f() {
    var grandTotalRow = "<tfoot><tr><td>Suma</td>";

  for(i=1;i<2;i++) {
        var total=0;
         var rows = $('#' + this.htmlObject + ' tbody tr');

          rows.each(function() {
            var cellVal = parseFloat($('td:eq('+i+')', this).text().replace(',',''));

          if(!isNaN(cellVal)){
              total+=cellVal;
          }

           });
        grandTotalRow += "<td>"+total.toFixed(0);+"</td>";
        }
          grandTotalRow += "</tr></tfoot>";
          if($('#'+this.htmlObject+' tfoot').length===0)
        $('#'+this.htmlObject).find('table').append(grandTotalRow);

    }  

(источник: http://biwithui.blogspot.com/2014/06/grand-total-in-table-component.html)

Буду благодарен за все советы!

1 ответ

Решение

Еще один способ обработки итогов в компоненте таблицы - добавить итоговую строку в набор результатов в функции PostFetch. Но итоги будут видны только на последней странице, и сортировка должна быть неактивной с помощью этого метода.

function f(d) {
 d.queryInfo.totalRows = d.resultset.length+1 + "";
 var total = new Array("Total",0,0,0,0,0,0,0,0," ");
 d.resultset.forEach(function (row){
    row.forEach(function (c,i){
        if (i!==0 && i!==9){
            total[i] = total[i]+c;
        }
    });
 });
 d.resultset.push(total);
 return d;
} 

Вы можете отформатировать эту итоговую строку в функции PostExecution, применив класс CSS к последней строке.

function f() {
  if ($('#'+this.htmlObject+'Table tr:last td:first-child').text() == 'Total') {
    $('#'+this.htmlObject+'Table tr:last').attr("class","tableTot");
  }
} 
Другие вопросы по тегам