示例说明
在透视分析中,隐藏一列。本宏只对清单报表生效(没有展开、收缩操作的报表)。使用宏之前的效果:在透视分析中,隐藏一列。本宏只对清单报表生效(没有展开、收缩操作的报表),并且不支持字段显示分类汇总。使用宏之前的效果:
使用宏之后的效果:
注意:由于浏览器的渲染模式不同,此报表宏在火狐浏览器不适用!
设置方法
- 在资源定制节点下,创建一张透视分析。
- 选中透视分析,右键选择 编辑宏 进入报表宏界面。
- 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为 INSIGHT;事件为 onRenderTable;并把下面宏代码复制到代码区域。
...
代码块 | ||||||
---|---|---|---|---|---|---|
| ||||||
function main(insight) { //隐藏列 var cellIndex = 1; //隐藏列序号,序号从0开始。 var newtables = new Array(); var table = insight.grid.mainTable; var maxRowcolumnSize = tableinsight.rows.length; for (var i = 0; i < maxRow; i++) { newtables.push(new Array()); }grid.getColumnSize(); var tr = table.tBodies[0].firstChild; var rowIndex = 0; //这个算法只对从左到右,从上到下合并有规律的合并单元格有用,对于间隔合并单元格的会有问题 while (tr) { if (tr.tagName == "TR") { var td = tr.firstChildlastChild; var columnIndex = 0columnSize - 1; var row = newtables[rowIndex]; while (row[columnIndex]) columnIndex++= []; while (td) { if (td.tagName == "TD") { for (var xy = 0; xy < td.rowSpancolSpan; xy++) { for (varrow[columnIndex - y] = 0td; y < } columnIndex = columnIndex - td.colSpan; y++) { } newtables[rowIndex + x][columnIndex + y] td = td.previousSibling; } rowIndex++; } tr = tr.nextSibling; } var length = }newtables.length; var hideColumns = [0]; //要隐藏的列序号,从0开始 insight.grid.customHideColumns = hideColumns; while (row[columnIndex])for (var i = 0; i < length; i++) { var row = newtables[i]; if (row && row.length > 0) { /*隐藏多列处理,直接找到对应的列并隐藏 */ columnIndex++; for (var ci in hideColumns) { } var tdindexi = td.nextSiblinghideColumns[ci]; } if (row[indexi]) { } var trnn = tr.nextSibling;row[indexi]; rowIndex++; } varif length(nn != newtables.length; null) { for (var i = 0; i < length; i++) {if (nn.getAttribute("isAgg") != "1") { var nn = newtables[i][cellIndex]; nn.style.display = "none"; /*隐藏多列处理,直接找到对应的列并隐藏 nn.setAttribute("isHideColumn", "1"); //可以不要,这里只是做个标识,方便扩展使用 } else { varif (nn.colSpan >= newtables[i][2];2) { nn.style.display = "none";*/colSpan = nn.colSpan - 1; } else { nn.setAttribute("isHideColumn", "1"); //可以不要,这里只是做个标识,方便扩展使用 } } table = newtables; } } } } } } |
关键对象总结
- 获取单元格对象:grid.getCell(m, cellIndex);
- 设置行隐藏:cell.style.display = "none";
...