示例说明
适用场景:此宏示例只是透视分析方法调用增加列的一个简单示例,实际代码应用只符合当前的报表场景,并且必须是清单明细数据,存在两个字段以上(包含两个字段)的行区不支持进行汇总合计。若是有其他的场景要求,相关宏代码需要自行调整。
透视分析添加排序列。效果图如下:
设置方法
- 在资源定制节点下,创建一张透视分析。
- 选中透视分析,右键选择 编辑宏 进入报表宏界面。
- 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为INSIGHT;事件为onRenderTable;并把下面宏代码复制到代码区域。
宏类型
类型 | 对象 | 事件 |
ClientSide | INSIGHT | onRenderTable |
宏代码
function main(insight) { var mainTable = insight.grid.mainTable; //获取表格对象 var columnFieldSize = insight.grid.columnFieldList.length; //获取列区个数 var measureFieldSize = insight.grid.measureFieldList.length; //获取度量值个数 var headSize = columnFieldSize > 0 ? (measureFieldSize > 1 ? columnFieldSize + 1 : columnFieldSize) : 1; var idx = 0; var rowSpan = 1; var trObj = mainTable.rows[0]; while (trObj != null) { if (headSize > 1) { headSize--; var firstChild = trObj.firstChild; var blankTd = firstChild.cloneNode(true); trObj.insertBefore(blankTd, firstChild); } else if (rowSpan > 1) { rowSpan--; } else { var firstChild = trObj.firstChild; var blankTd = firstChild.cloneNode(true); if (idx == 0) { var span = blankTd.firstChild.firstChild.nextSibling; span.innerHTML = "序号";//设置排序的表格表头 } else { blankTd.align = 'center'; blankTd.innerHTML = "" + idx; } idx++; trObj.insertBefore(blankTd, firstChild); rowSpan = firstChild.rowSpan; } trObj = trObj.nextSibling; } }
附件:透视分析排序.xml