如何在Cognos BI 10.2.2中将最近使用的参数设为值提示默认值
在Cognos BI 10.2.2中让提示记住最近使用的参数值
嘿,我刚好对Cognos 10.2.2的这个需求很熟悉,给你两种可行的方案,看你需要哪种场景来选:
方案一:会话内保留(关闭浏览器后重置)
这种方法用Cognos内置的会话参数实现,不需要额外代码,适合只需要在当前浏览器会话里记住选择的场景:
- 首先,创建一个会话参数:在报表的“参数”面板里,点击“添加参数”,选择“会话参数”,命名为
Last_Term_Code,数据类型和你的Term_Code保持一致(比如字符串)。 - 编辑提示页面的带值提示:找到提示的属性面板,切换到“默认值”选项,选择“参数值”,然后选中刚创建的
Last_Term_Code。 - 设置报表后处理宏:打开报表的“报表属性”,切换到“事件”标签页,选择“报表运行后”事件,添加以下宏代码:
这样用户每次提交报表后,当前选择的SetSessionParameter('Last_Term_Code', ParamValue('Term_Code'))Term_Code就会被存在会话参数里,下次打开报表时,提示就会自动用上这个值啦。
方案二:跨会话保留(关闭浏览器仍保留)
如果需要关闭浏览器再打开还能记住上次选择,就用JavaScript配合Cookie来实现:
- 编辑提示页面,添加一个HTML项目(在工具栏里找“HTML”组件),放在提示的任意位置都可以。
- 在HTML项目里粘贴以下代码:
// 页面加载时读取Cookie并自动设置提示值 window.onload = function() { var savedTerm = getCookie('Last_Term_Code'); if (savedTerm) { var promptCtrl = cognos.Report.getReport("_THIS_").getPromptControlByName("Term_Code"); if (promptCtrl) { promptCtrl.setValues([{use: savedTerm}]); } } }; // 提交报表时把选择的值存到Cookie function saveSelectedTerm() { var promptCtrl = cognos.Report.getReport("_THIS_").getPromptControlByName("Term_Code"); if (promptCtrl) { var selectedVal = promptCtrl.getValues()[0].use; setCookie('Last_Term_Code', selectedVal, 365); // 这里设置保存1年,可按需修改天数 } } // 辅助操作Cookie的函数 function setCookie(name, value, days) { var expires = ""; if (days) { var date = new Date(); date.setTime(date.getTime() + (days*24*60*60*1000)); expires = "; expires=" + date.toUTCString(); } document.cookie = name + "=" + (value || "") + expires + "; path=/"; } function getCookie(name) { var nameEQ = name + "="; var cookieArr = document.cookie.split(';'); for(var i=0;i < cookieArr.length;i++) { var c = cookieArr[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } - 最后修改提交按钮的事件:找到提示页面的提交按钮,编辑它的“onclick”事件,添加
saveSelectedTerm();,这样用户点击提交时就会把选择的值存到Cookie里,下次打开报表就会自动加载啦。
注意事项
- 方案一的会话参数是Cognos原生支持的,不会有脚本限制问题,但只在当前会话有效;
- 方案二需要确保你的Cognos环境允许页面执行JavaScript,有些企业的安全策略可能会禁用脚本;
- 测试的时候可以打开新的浏览器窗口或者清除Cookie来验证效果。
内容的提问来源于stack exchange,提问作者lucky
相关产品推荐
相关产品推荐

