2017-12-05 17 views
0

Pentaho CDEに問題があります。 合計の数値列を持つテーブルコンポーネントに行を追加したいと思いますが、見つかったコードはテーブルの1ページのみで動作します。ページ設定を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"); 
    } 
}