版本比较
比较
标识
- 该行被添加。
- 该行被删除。
- 格式已经改变。
示例说明
在透视分析中,希望指定隐藏某一列,可以通过宏代码实现。
本宏只对清单报表生效(没有展开、收缩操作的报表),并且不支持字段显示分类汇总。使用宏之前的效果:
Image Modified
使用宏之后的效果:
Image Modified
设置方法
- 在“分析展现”节点下,创建一张透视分析。
- 选中透视分析,右键选择 编辑宏 进入报表宏界面。
- 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为 INSIGHT;事件为 onRenderTable;并把下面宏代码复制到代码区域。
宏类型
类型 | 对象 | 事件 |
---|---|---|
ClientSide | INSIGHT | onRenderTable |
宏代码
代码块 | ||||||
---|---|---|---|---|---|---|
| ||||||
function main(insight) { var cellIndex = 0; //可以指定要隐藏的列序号,序号从0开始。 hideAColumn(insight, cellIndex); } //隐藏指定列 function hideAColumn(insight, cellIndex) { var newtables = new Array(); var table = insight.grid.mainTable; table.style.backgroundColor = "rgba(255,255,255,0)"; //设置table背景透明度为0 var columnSize = insight.grid.getColumnSize(); var tr = table.tBodies[0].firstChild; var rowIndex = 0; //这个算法只对从左到右,从上到下合并有规律的合并单元格有用,对于间隔合并单元格的会有问题 while (tr) { if (tr.tagName == "TR") { var td = tr.lastChild; var columnIndex = columnSize - 1; var row = newtables[rowIndex] = []; while (td) { if (td.tagName == "TD") { for (var y = 0; y < td.colSpan; y++) { row[columnIndex - y] = td; } columnIndex = columnIndex - td.colSpan; } td = td.previousSibling; } rowIndex++; } tr = tr.nextSibling; } var length = newtables.length; var hideColumns = [cellIndex]; //要隐藏的列序号,从0开始 insight.grid.customHideColumns = hideColumns; for (var i = 0; i < length; i++) { var row = newtables[i]; if (row && row.length > 0) { /*隐藏多列处理,直接找到对应的列并隐藏 */ for (var ci in hideColumns) { var indexi = hideColumns[ci]; if (row[indexi]) { var nn = row[indexi]; if (nn != null) { if (nn.getAttribute("isAgg") != "1") { nn.style.display = "none"; nn.setAttribute("isHideColumn", "1"); //可以不要,这里只是做个标识,方便扩展使用 } else { if (nn.colSpan >= 2) { nn.colSpan = nn.colSpan - 1; } else { nn.setAttribute("isHideColumn", "1"); //可以不要,这里只是做个标识,方便扩展使用 } } } } } } } } |
关键对象总结
- 获取单元格对象:grid.getCell(m, cellIndex);
- 设置行隐藏:cell.style.display = "none";
资源下载
资源:migrate.xml
面板 | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
|