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

示例说明

    不同用户进入仪表盘,访问同一个页面,通过点击页面上的电子表格数据,跳转到不同的页面。

           

       

版本及客户端要求


实现步骤

1.在 资源定制 中创建页面,包含跳转源页面,目标页面1和目标页面2

2.选中页面,右键选择 编辑宏 进入报表宏界面

3.按照需要,在页面的电子表格报表上创建跳转规则,如下:


4.双击打开跳转规则自动生成的客户端宏代码,在跳转规则向导生成的宏代码中增加以下代码,如下图:

 



宏代码

function paramToString(v) {
    return v == null ? null : v.toString();
}
function main(spreadsheetReport, ruleName, params, page, pageContext) {
    if (ruleName != "不同用户跳转不同报表") return;
    var targetResId = "I4028818a0154503550355a86015451e101930b16";
    
    //增加的内容
    var user = registry.get("User"); //获取用户名
    if (user == "admin") targetResId = "I4028818a0154503550355a86015451e101930b16"; //如果用户是admin,则跳转到页面1
    else if (user = "demo") targetResId = "I4028818a0154503550355a86015451e1491d0b1a"; //如果用户是demo,则跳转到页面2
    
    
    
    var newReport = false;
    //跨页跳转需要先获取参数值。
    var paramsInfo = new Array();
    //打开新页面
    var urlparams = "&browserType=ie&showPath=false";
    //@smartbi.openOtherPage:"I4028818a0154503550355a86015451e101930b16" 
    page.openResInCurrentWindow(targetResId, paramsInfo, urlparams);
}
//创建参数信息
function createParamInfo(name, value, disValue, mergeType) {
    var paramInfo = new Object();
    paramInfo.name = name;
    paramInfo.value = value + "";
    paramInfo.displayValue = disValue + "";
    if (mergeType)
        paramInfo.groupType = mergeType;
    return paramInfo;
}

关键对象总结

资源下载

报表资源:不同用户跳转不同页面migrate.xml