页面树结构
转至元数据结尾
转至元数据起始

提示:本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。

示例说明

在透视分析中,希望指定隐藏某一列,可以通过宏代码实现。

本宏只对清单报表生效(没有展开、收缩操作的报表),并且不支持字段显示分类汇总。使用宏之前的效果:

使用宏之后的效果:

设置方法

  1. 在“分析展现”节点下,创建一张透视分析。
  2. 选中透视分析,右键选择 编辑宏 进入报表宏界面。
  3. 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为 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