代码之家  ›  专栏  ›  技术社区  ›  Julia

带页码的表中的总计

  •  1
  • Julia  · 技术社区  · 7 年前

    我对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 )

    我将非常感谢所有的建议!

    1 回复  |  直到 7 年前
        1
  •  1
  •   marvinh    7 年前

    处理表组件中总计的另一种方法是在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");
      }
    }