温馨提示
本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。
示例说明
不同用户进入仪表盘,访问同一个页面,通过点击页面上的电子表格数据,跳转到不同的页面。
- admin用户跳转到目标页面1
- demo用户跳转到目标页面2
版本及客户端要求
- smartbi版本:5.1
- 客户端:PC
- 浏览器:IE11、谷歌浏览器、火狐浏览器
实现步骤
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; }
关键对象总结
- 通过var user = registry.get("User"); 获取用户名
- 新增代码中的targetResId,通过在页面上 右击->属性中的“节点ID”获得