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

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

示例说明

我们对电子表格报表设置跳转规则时,有时会遇到如下需求:要求根据源报表谋参数的参数值不同,跳转到不同的目标报表。或者是根据其他判断条件,跳转到不同的目标报表,类似上述需求,可以参照如下方法设置。

资源演示效果如下

设置方法

1、首先在电子表格设计器(Microsoft Office Excel)中,创建电子表格报表,源报表和目标报表。

2、在浏览器的“分析展现”节点下,选中电子表格,右键选择 编辑宏 进入报表宏界面。

3、在源报表的报表宏界面新建跳转规则向导。设置向导,让其自动生成服务端模块和客户端模块代码,然后手动修改其生成的“客户端模块”代码,参考如下的示例代码,修改其中的 main 方法。

宏类型

类型

对象

事件

ClientSide

spreadsheetReport

onLinkClick

宏代码

function paramToString(v) {
    return v == null ? null : v.toString();
}
function main(spreadsheetReport, ruleName, params) {
    //跳转规则名称
    if (ruleName != "根据参数跳转") return;
    //根据参数名称获取参数值
    var value = spreadsheetReport.getParameterValue("产品类别");
    var obj;
    // 判断当前参数值,跳转到不同的报表
    if (value == "饮料") {
        obj = {
            name: "产品类别",
            value,
            value
        };
        jump_role1(spreadsheetReport, obj);
    } else if (value == "调味品") {
        obj = {
            name: "产品类别",
            value,
            value
        };
        jump_role2(spreadsheetReport, obj);
    } else {
        alert("当前参数值不能跳转到任何报表!");
    }
};
// 如果当前参数值是饮料,则跳转到报表1
function jump_role1(spreadsheetReport, obj) {
    var paramsInfo = [];
    //将参数放入参数数组
    paramsInfo.push(obj);
    //覆盖当前资源
    var command = spreadsheetReport.command;
    command.close();
    //@smartbi.openOtherPage:"I8a8af0a60172a0faa0fa26670172a158c142047d"
    command.execute('OPENWITHNOREFRESH', 'I8a8af0a60172a0faa0fa26670172a158c142047d');
    var report = command.spreadsheetReport;
    if (paramsInfo.length > 0) report.setParamsInfo(paramsInfo);
    report.doRefresh();
};
// 如果当前参数值是调味品,则跳转到报表2
function jump_role2(spreadsheetReport, obj) {
    var paramsInfo = [];
    //将参数放入参数数组
    paramsInfo.push(obj);
    //覆盖当前资源
    var command = spreadsheetReport.command;
    command.close();
    //@smartbi.openOtherPage:"I8a8af0a60172a0faa0fa26670172a158c142047d"
    command.execute('OPENWITHNOREFRESH', 'I8a8af0a60172a0faa0fa26670172a158c142047d');
    var report = command.spreadsheetReport;
    if (paramsInfo.length > 0) report.setParamsInfo(paramsInfo);
    report.doRefresh();
};

关键对象总结

  • 跳转到目标报表:function jump_role2(spreadsheetReport, ruleName, params)。

资源下载

       资源:migrate.xml