示例说明
在透视分析中,隐藏一列。本宏只对清单报表生效(没有展开、收缩操作的报表)。使用宏之前的效果:
使用宏之后的效果:
设置方法
- 在资源定制节点下,创建一张透视分析。
- 选中透视分析,右键选择 编辑宏 进入报表宏界面。
- 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为 INSIGHT;事件为 onRenderTable;并把下面宏代码复制到代码区域。
宏类型
类型 | 对象 | 事件 |
---|---|---|
ClientSide | INSIGHT | onRenderTable |
宏代码
function main(insight) { var cellIndex = 1; //隐藏列序号,序号从0开始。 var newtables = new Array(); var table = insight.grid.mainTable; var maxRow = table.rows.length; for (var i = 0; i < maxRow; i++) { newtables.push(new Array()); } var tr = table.tBodies[0].firstChild; var rowIndex = 0; while (tr) { if (tr.tagName == "TR") { var td = tr.firstChild; var columnIndex = 0; var row = newtables[rowIndex]; while (row[columnIndex]) columnIndex++; while (td) { if (td.tagName == "TD") { for (var x = 0; x < td.rowSpan; x++) { for (var y = 0; y < td.colSpan; y++) { newtables[rowIndex + x][columnIndex + y] = td; } } while (row[columnIndex]) columnIndex++; } td = td.nextSibling; } } tr = tr.nextSibling; rowIndex++; } var length = newtables.length; for (var i = 0; i < length; i++) { var nn = newtables[i][cellIndex]; nn.style.display = "none"; /*隐藏多列处理,直接找到对应的列并隐藏 var nn = newtables[i][2]; nn.style.display = "none";*/ } table = newtables; }
关键对象总结
- 获取单元格对象:grid.getCell(m, cellIndex);
- 设置行隐藏:cell.style.display = "none";