提示:本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。
示例说明
在灵活分析中,列名随着参数的变化而变化,如下图:
设置方法
- 在资源定制中,创建一张灵活分析(包含开始日期参数和结束日期参数);
- 选中灵活分析,右键选择 编辑宏 进入报表宏界面。
- 在报表宏界面新建两个客户端模块。其中一个在弹出的新建模块对话框中选择对象为simpleReport、事件为onRenderTable、并把下面宏代码复制到代码区域;另外一个在弹出的新建模块对话框中选择对象为simpleReport、事件为onRender、并把下面同样的宏代码复制到代码区域。
宏类型
类型 | 对象 | 事件 |
---|---|---|
ClientSide | simpleReport | onRenderTable |
宏类型
类型 | 对象 | 事件 |
---|---|---|
ClientSide | simpleReport | onRender |
宏代码
function main(simpleReport, simpleReportContext) { var starttime = ""; var endtime = ""; var paramObjList = simpleReport.paramPanelObj.paramObjList; for (var j = 0; j < paramObjList.length; j++) { var paramTag = paramObjList[j].paramTag; var param = paramTag.param; //参数名 if (param.alias == "开始时间") { starttime = simpleReport.paramPanelObj.getParamDisplayValue(param.id); } //参数名 if (param.alias == "结束时间") { endtime = simpleReport.paramPanelObj.getParamDisplayValue(param.id); } } var syear = starttime.substring(0, 4); var eyear = endtime.substring(0, 4); var sMonth = starttime.substring(5, 7); var eMonth = endtime.substring(5, 7); var lastYear = new Number(syear) - 1; var lastYear2 = new Number(eyear) - 1; var head1 = syear + "年" + sMonth + "月" + "-" + eyear + "年" + eMonth + "月"; var head2 = lastYear + "年" + sMonth + "月" + "-" + lastYear2 + "年" + eMonth + "月"; //判断月份相同 if (syear == eyear && sMonth == eMonth) { head1 = syear + "年" + sMonth + "月"; head2 = lastYear + "年" + sMonth + "月"; } var prevYearColIndex = simpleReport.getFieldIndexByAlias("产品名称"); var currentYearColIndex = simpleReport.getFieldIndexByAlias("单价"); var prevYearColIndex2 = simpleReport.getFieldIndexByAlias("数量"); var currentYearColIndex2 = simpleReport.getFieldIndexByAlias("折扣"); //设置第二列名 // simpleReport.grid.setColHeader(1, head1); var childv = simpleReport.grid.getCell(1, prevYearColIndex); if (childv && childv.firstChild && childv.firstChild.firstChild) { childv.firstChild.firstChild.nextSibling.innerHTML = head2 + "<WBR>"; } var childv = simpleReport.grid.getCell(1, prevYearColIndex2); if (childv && childv.firstChild && childv.firstChild.firstChild) { childv.firstChild.firstChild.nextSibling.innerHTML = head2 + "<WBR>"; } //设置第三列名 // simpleReport.grid.setColHeader(2, head2); var yearChild = simpleReport.grid.getCell(1, currentYearColIndex); if (yearChild && yearChild.firstChild && yearChild.firstChild.firstChild) { yearChild.firstChild.firstChild.nextSibling.innerHTML = head1 + "<WBR>"; } var yearChild = simpleReport.grid.getCell(1, currentYearColIndex2); if (yearChild && yearChild.firstChild && yearChild.firstChild.firstChild) { yearChild.firstChild.firstChild.nextSibling.innerHTML = head1 + "<WBR>"; } }
关键对象总结
- 获取参数清单列表对象:simpleReport.paramPanelObj.paramObjList;
- 根据字段别名获取列号:simpleReport.getFieldIndexByAlias();
- 根据坐标获取单元格对象:simpleReport.grid.getCell();
资源文件:migrate.xml