提示:本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。
示例说明
在灵活分析中,通过的合计功能并不适用的所有的情况,比如对于比率计算列对应的行一般不是简单的合计,而是相关汇总列小计的比值。
设置方法
- 在资源定制中,创建一张灵活分析;
- 选中灵活分析,右键选择 编辑宏 进入报表宏界面。
- 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为simpleReport;事件为onRenderTable;并把下面宏代码复制到代码区域。
宏类型
类型 | 对象 | 事件 |
ClientSide | simpleReport | onRenderTable |
宏代码
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, x).innerText; //获取总的收入值 var a2 = simpleReport.grid.getCell(m, y).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, n).innerText = rate; //设置占比合计行的值 } } } }
关键对象总结
- 根据字段别名取列号:simpleReport.getFieldIndexByAlias("单价");