2017-12-05 9 views
0

입니다. Pentaho CDE에 문제가 있습니다. 총 숫자 열이있는 테이블 구성 요소에 행을 추가하고 싶습니다. 그러나 찾은 코드는 테이블의 한 페이지에서만 작동합니다. 페이지 매김을 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)

내가 조언 모두를위한 감사하겠습니다

여기에 코드입니다!

답변

0

테이블 구성 요소에서 총계를 처리하는 또 다른 방법은 전체 행을 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; 
} 

CSS 클래스를 마지막 행에 적용하여 PostExecution 함수에서이 전체 행의 서식을 지정할 수 있습니다.

function f() { 
    if ($('#'+this.htmlObject+'Table tr:last td:first-child').text() == 'Total') { 
    $('#'+this.htmlObject+'Table tr:last').attr("class","tableTot"); 
    } 
}