页面树结构

版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。


注意

提示:本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。

示例说明
在灵活分析中,通过的合计小计功能并不适用的所有的情况,比如对于比率计算列对应的行一般不是简单的小计,而是相关计算列小计的比值。在灵活分析中,通过的合计功能并不适用的所有的情况,比如对于比率计算列对应的行一般不是简单的合计,而是相关汇总列小计的比值。 Image Removed


Image Added


设置方法

  1. 在资源定制中,创建一张灵活分析;
  2. 选中灵活分析,右键选择 编辑宏 进入报表宏界面。
  3. 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为simpleReport;事件为onRenderTable;并把下面宏代码复制到代码区域。

...

类型

对象

事件

ClientSide

simpleReport

onRenderTable

宏代码

代码块
languagejs
themeEclipse
languagejs
firstline1
linenumberstrue
collapsetrue
function main(simpleReport, simpleReportContext) {
    for (var m = simpleReport.grid.getHeaderRows(); m < simpleReport.grid.getRowCount(); m++) {
        var n = simpleReport.getFieldIndexByAlias('单价占比'); //获取占比所在的列
        var x = simpleReport.getFieldIndexByAlias('数量收入');  //获取收入所在的列
        var y = simpleReport.getFieldIndexByAlias('折扣支出');  //获取支出所在的列
        var c = simpleReport.grid.getCell(m, 0);    //获取第一列数据
        var value = c.innerText;
        if (value.indexOf("小计合计") >= 0) {   //判断该行是不是合计行
            var a1 = simpleReport.grid.getCell(m, nx).innerText; //获取总的收入值
            var a2 = simpleReport.grid.getCell(m, xy).innerText; //获取总的支出值
            if (a2 != 0 && a1 && a2) {
                var floatValue1 = parseFloat(a1.replace(/,/g, ""));
                var floatValue2 = parseFloat(a2.replace(/,/g, ""));
  var  rate = floatValue1 / floatValue2 * 100;   rate = rate.toFixed(2) + '%' 
 simpleReport.grid.getCell(m, y).innerText = rate var rate = floatValue1 / floatValue2 * 100;
  }   //simpleReport.grid.getCell(m,0).innerText = '';   simpleReport.grid.getCell(m, 0).innerText = simpleReport.grid.getCell(m - 1, 0).innerText; 
 simpleReport.grid.getCell(m, 1).innerText = '小计'; 
 } 
 else if (value.indexOf("合计") >= 0) { 
 var a1 = rate = rate.toFixed(2) + '%'
                simpleReport.grid.getCell(m, n).innerText; 
 var a2 = simpleReport.grid.getCell(m, x).innerText; 
 var floatValue1 = parseFloat(a1.replace(/,/g, "")); 
 var floatValue2 = parseFloat(a2.replace(/,/g, "")); 
 var rate = floatValue1 / floatValue2 * 100; 
 rate = rate.toFixed(2) + '%' 
 simpleReport.grid.getCell(m, y).innerText = rate; 
 
 } 
 } 
rate;   //设置占比合计行的值
            }
        }
    }
}

关键对象总结

  • 根据字段别名取列号:simpleReport.getFieldIndexByAlias("单价");