我的博客:在CognosReportStudio页面开发中嵌入JS功能,实现不同效果方法集编者:不倒翁wengr@163.comJS方法引用简述在CognosReportStudio开发设计页面中,可以友善兼容HTML、JS脚本。往往在开发报表,很少去嵌入JS程序片段,自身工具很多功能基本满足报表需要。但事实上,用户在使用过程中,希望报表需求能与网站网页、企业应用系统页面,功能更多更强大。此时,对Cognos工具设计师开发要求更高,更全面的编程技巧。利用JS代码解决RS设计报表的问题:1、嵌入JS代码解决下拉选项框中的“--------------”条目。2、嵌入JS代码获取用户名称并设置背景,禁用右键弹出菜单不能复制功能。3、嵌入JS代码具有打印功能4、嵌入JS代码下载Excel、Pdf格式5、嵌入JS代码解决下拉选项框参数名替换6、嵌入JS代码获取默认值并自动提交参数7、……等等1、嵌入JS获取用户登录名称在主页面定义表框架,单独创建一个“HTML项目”,嵌入以其中一段程序。======================================================================divid=tabdivid=userDIV//在RS页面,增加一个“HTML项目”,内容如下:JS代码:我的博客:=javascriptvarform=getFormWarpRequest();vardropDown=form._oLstChoices_user;dropDown.remove(1);//去掉'--------'dropDown.remove(0);//去掉参数名称dropDown.removeAttribute(hasLabel);//默认值不可选/script/div/div======================================================================JS定义的_user名称,在值提示“其他”项属性中,修改“名称”栏,如下图。在创建查询主题是,通过宏函数获取用户信息,创建一个查询项,编辑表达式:#sq($account.personalInfo.userName)#注意:在RS可用组件中找不到自动宏函数,可以通过FM工程找到。2、嵌入JS解决多余成员项如果在同一个页面嵌入多段JS程序,以及自定义函数时,表框架只定义一次即可。======================================================================JS代码:scriptlanguage=javascriptvarform=getFormWarpRequest();vardropDown=form._oLstChoices_data;dropDown.remove(1);//去掉'--------'//dropDown.remove(0);//去掉参数名称dropDown.removeAttribute(hasLabel);//默认值不可选/script======================================================================JS定义的_data名称,在值提示“其他”项属性中,修改“名称”栏,如下图。我的博客:、嵌入JS解决背景限制功能结合上面的表框架,单独创建一个“HTML项目”控件,嵌入全部脚本:======================================================================JS代码:scriptlanguage=javascript//获取用户名称并设置背景functiongetvalues(str){vardivdata=document.getElementById(str).getElementsByTagName(option);for(vari=0;idivdata.length;i++){if(divdata[i].selected){returndivdata[i].value;}}}//tab.style.background=url('('userDIV')+.jpg');tab.style.background=url('('userDIV')+.jpg');//禁止复制document.oncontextmenu=newFunction(event.returnValue=false);document.onselectstart=newFunction(event.returnValue=false);//获取页面cv.id对象值functiongetObjectName(){returndocument.getElementById(cv.id).value;}//禁用右键弹出菜单functiondisableRightClick(){varobjName=getObjectName();eval(oCV+objName+.bCanUseCognosViewerContextMenu=false;);}disableRightClick();/script======================================================================4、嵌入JS支持打印功能在指定位置创建一个“HTML项目”控件,嵌入脚本。======================================================================JS代码:inputtype=buttonvalue=打印style=padding-left:10px;padding-right:10px;font-size:10px我的博客:=javascript:print();class=toolbarButton/======================================================================5、嵌入JS支持下载功能在指定位置创建一个“HTML项目”控件,嵌入脚本。======================================================================JS代码:inputtype=buttonvalue=数据导出style=padding-left:0px;padding-right:0px;font-size:10pxonclick=javascript:gCognosViewer.getRV().viewReport('XLWA')class=toolbarButton/======================================================================或者,通过自定义函数,预处理下载图表支持界面方式。======================================================================//Excel导出功能scriptlanguage=javascriptfunctiongetObjectName(){returnoCV+document.getElementById(cv.id).value;}functionexpExcel(){varobjName=getObjectName();eval(objName+.getRV().viewReport(\'XLWA\'););}/scriptimgsrc=../rv/images/export_excel.gifonclick=expExcel()//PDF导出功能scriptlanguage=javascriptfunctiongetObjectName(){returnoCV+document.getElementById(cv.id).value;}functionexpPDF(){varobjName=getObjectName();eval(objName+.getRV().viewReport(\'PDF\'););}/script我的博客:=../rv/images/export_PDF.gifonclick=window.open();expPDF()======================================================================6、嵌入JS解决下拉选项框参数名替换以日期提示框为例,在提示框之后加载一个“HTML项目”控件,嵌入脚本。======================================================================JS代码:scriptlanguage=javascriptvarf=getFormWarpRequest();varlist=f._oLstChoicesp_data;remove2line(list);canSubmitPrompt();functionremove2line(obj){if(obj){obj.remove(1);varadd=obj[0];//alert(aaa.text);add.text='全部';//obj.remove(0);obj.removeAttribute(hasLabel);//obj.remove(1);}}/script======================================================================JS定义的_data名称,在值提示“其他”项属性中,修改“名称”栏,如下图。7、嵌入JS代码获取默认值并自动提交参数以日期提示框为例,在提示框之后加载一个“HTML项目”控件,嵌入脚本。我的博客:======================================================================metaHTTP-EQUIV=pragmaCONTENT=no-cachemetaHTTP-EQUIV=Cache-ControlCONTENT=no-cache,must-revalidatemetaHTTP-EQUIV=expiresCONTENT=0scriptlanguage=javascriptvarform=getFormWarpRequest();vardropDown=form._oLstChoices_data;//_data为值提示组件名for(i=0;dropDown.length=i;i++){if(i==dropDown.length){dropDown.options[i-1].selected=true;//设置最后一个为默认值}}functioninit(){promptButtonFinish();}/scriptbodyonload=init()==================