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

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

示例说明

适用场景:此宏示例只是透视分析方法调用增加列的一个简单示例,实际代码应用只符合当前的报表场景,并且必须是清单明细数据,存在两个字段以上(包含两个字段)的行区不支持进行汇总合计。若是有其他的场景要求,相关宏代码需要自行调整。

透视分析添加排序列。效果图如下:

设置方法

  1. 在“分析展现”节点下,创建一张透视分析。
  2. 选中透视分析,右键选择 编辑宏 进入报表宏界面。
  3. 在报表宏界面新建客户端模块,在弹出的新建模块对话框中选择对象为INSIGHT;事件为onRenderTable;并把下面宏代码复制到代码区域。

宏类型

类型

对象

事件

ClientSide

INSIGHT

onRenderTable

宏代码

function main(insight) {
    //设置新增列的表头名,可修改项
    columnName = "序号";
    addSortColumn(insight, columnName);
}
//添加一列排序列
function addSortColumn(insight, columnName) {
    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 = columnName; 
            } else {
                blankTd.align = 'center';
                blankTd.innerHTML = "" + idx;
            }
            idx++;
            trObj.insertBefore(blankTd, firstChild);
            rowSpan = firstChild.rowSpan;
        }
        trObj = trObj.nextSibling;
    }
}

资源下载

资源:migrate.xml