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

该宏示例在 V10.5上 验证通过

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

示例说明

在项目中需要显示多维分析报表的同时也要显示一些动态的说明。该问题可以通过宏实现,如下图:

设置方法

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

宏类型

类型

对象

事件

ClientSide

olapQuery

afterRefreshTable

宏代码

function main(olapQuery) {
    var grid = olapQuery.olapTable.domAgent.getElementByBofid("olap-grid");
    var rowCount = 0; //表格总行数
    var columnCount = 0; //列数
    var isIE = browserinfo();
    if (grid) {
        rowCount = grid.rows.length;
        if (isIE == 'IE') {
            columnCount = grid.rows(0).cells.length;
        } else {
            columnCount = grid.rows[0].cells.length;
        }
    }
    if (rowCount > 0 && columnCount > 0) {
        var html = ""; //静态文字
        for (var i = 1; i < rowCount; i++) { //按行生成文字
            var oneLine = buildLine(i);
            html += oneLine;
        }
        olapQuery.elemReportTail.innerHTML = html; //设置尾部内容
    }
    function buildLine(lineNum) {
        var currentColumnCount = 0;
        if (isIE == 'IE') {
            currentColumnCount = grid.rows(lineNum).cells.length;
        } else {
            currentColumnCount = grid.rows[lineNum].cells.length;
        }
        var startColumn = currentColumnCount - columnCount + 2; //起始列
        var line = "" + olapQuery.olapTable.getCellValue(lineNum, startColumn - 1) + " 销售情况,其中";
        for (var i = startColumn; i < currentColumnCount - 1; i++) {
            line += olapQuery.olapTable.getCellValue(0, i);
            line += olapQuery.olapTable.getCellValue(lineNum, i);
        }
        //百分比特殊处理
        var persentStr = olapQuery.olapTable.getCellValue(lineNum, currentColumnCount - 1);
        var myvalue = parseFloat(persentStr);
        if (myvalue > 0) {
            persentStr = "<font color=red >上升 " + persentStr + "</font>";
        } else if (myvalue < 0) {
            persentStr = "<font color=red >下降 " + Math.abs(myvalue) + "%</font>";
        } else {
            persentStr = "<font color=red >为零</font> ";
        }
        return line += "增长率<font color=red >" + persentStr + ";</font>";
    }
    /*判断浏览器类型*/
    function browserinfo() {
        var Browser_Name = navigator.appName;
        var Browser_Version = parseFloat(navigator.appVersion);
        var Browser_Agent = navigator.userAgent;
        var Actual_Version, Actual_Name;
        var is_IE = (Browser_Name == "Microsoft Internet Explorer"); //判读是否为ie浏览器
        var is_NN = (Browser_Name == "Netscape"); //判断是否为netscape浏览器
        var is_op = (Browser_Name == "Opera"); //判断是否为Opera浏览器
        if (is_NN) {
            return "Netscape";
        }
        else if (is_IE) {
            return "IE";
        }
        else if (is_op) {
            return "Opera";
        }
        else {
            return "other ";
        }
    }
}

资源下载

资源:migrate.xml