关于自定义toolbar,看了贝克汉姆的博客
http://www.cognoschina.net/home/space.php?uid=2785&do=blog&id=4255和
junix2008的
http://www.cognoschina.net/club/thread-14474-1-1.html文章,试着自己动手做了做。现将思路和做的一个例子给大家分享并提出一点思考与大家共同探讨。
在reportStudio开发的报表运行时,可根据用户需求修改title和toolbar上的链接,如图:
实现思路:
查看运行页面源码,在head标签中有两条内置script,其中第二个的主要功能是设置该页面的一些运行参数,以及title和toolbar的定义;
Toolbar的定义在window.oCV_NS_.rvMainWnd.setToolbar()方法中,title栏的定义在window.oCV_NS_.rvMainWnd.setBannerToolbar()方法中,配置字符串以json格式组成。为了方便阅读这段源码,最好先将其格式化。
script代码编写:
由于这段代码在页面生成后就执行,已经将对象都创建好了,相关参数、属性页都设置好了,因此,在我们修改title栏或toolbar时,只需重写上面两个方法即可,重写代码放在“html”项目中。
上图的script代码:
< script language = "javascript" >window.oCV_NS_.rvMainWnd.setToolbar({
"namespace": "_NS_",
//在调试运行时修改为“RS”
"divId": "CVToolbar_NS_",
"style": "toolbar",
"S": [ //json字串开始
{
"I": { //从目前代码来看,可有四个可选的设置标志:“I”表示一个包含图标和文字的链接,可点击触发动作;“B”表示一个“Button”,只有小图标可点击触发动作;“P”表示一个分隔标识,当他是第一个或最后一个是将不显示;“T”表示设置一文本;
"N": "runReport",//N标志是设置名字,注意其唯一性
"A": "window.oCV_NS_.getRV().RunReport();",//点击该工具出发的事件
"E": "运行",//显示的文字
"C": "/ibmcognos/rv/images/action_run.gif" //相关的小图标,注:由于服务配置的是IIS的网关,如果是用dispatch作为网关,这个图片的路径可能不同,需要查看一下你页面的源码
}
//虽然写那么多注释,其实只要你将源码拿出来和你的运行页面对比着看,很快就明白了。
},
{
"I": {
"N": "openWithReportStudio",
"A": "window.oCV_NS_.getRV().launchRS();",
"E": "使用 Report Studio 打开",
"C": "/ibmcognos/skins/corporate/branding/tools_report_studio.gif"
}
}]
});
window.oCV_NS_.rvMainWnd.setBannerToolbar({
"namespace": "_NS_",
"divId": "CVBanner_NS_",
"style": "banner",
"S": [{
"T": {
"N": "marque",
"E": "
思考:
页面初始化的的这段脚本很重要,但这段源码是怎么放进运行页面的呢?是读取的安装文件里某个模版文件,还是这段字符串封装生成的。如果是前者,那么我们可以通过修改那个模版来控制其显示,但目前为止,这个文件没有找到;
收起