互联网服务博客文章

随心所欲修改你的toolbar

关于自定义toolbar,看了贝克汉姆的博客http://www.cognoschina.net/home/space.php?uid=2785&do=blog&id=4255junix2008http://www.cognoschina.net/club/thread-14474-1-1.html文章,试着自己动手做了做。现将思路和做的一个例子给大家分享并提出一点思考与大家共同探讨。

在reportStudio开发的报表运行时,可根据用户需求修改title和toolbar上的链接,如图:


QQ截图20121013004800.png


实现思路:


         查看运行页面源码,在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": "从左向右滚动 " //加入自定义的html标签,注意其中“/”的使用。
        }
    },
    {
        "T": {
            "N": "text1",
            "E": "早上好! "
        }
    },
    {
        "T": {
            "N": "userName",
            "E": "张三"
        }
    },
    {
        "T": {
            "N": "text2",
            "E": "欢迎使用 xxx公司财务管理系统"
        }
    },
    {
        "P": {
            "Y": "vertical_line"
        }
    },
    {
        "I": {
            "N": "logOff",
            "E": "注销",
            "C": "/ibmcognos/skins/corporate/branding/tools_logoff.gif",
            "A": "window.oCV_NS_.getRV().authenticate("logoff", "/ibmcognos/cgi-bin/cognos.cgi?b_action=xts.run&m=portal/logoff.xts");"
        }
    },
    {
        "P": {
            "Y": "vertical_line"
        }
    },
    {
        "I": {
            "N": "home",
            "E": "主页",
            "C": "/ibmcognos/skins/corporate/shared/images/action_home.gif",
            "A": "window.oCV_NS_.getRV().returnHome("/ibmcognos/cgi-bin/cognos.cgi?b_action=xts.run&m=portal/main.xts");"
        }
    },
    {
        "I": {
            "N": "return",
            "E": "返回",
            "C": "/ibmcognos/skins/corporate/shared/images/action_return.gif",
            "A": "executeBackURL('_NS_');"
        }
    },
    {
        "I": {
            "N": "runIn2",
            "E": "查看",
            "C": "/ibmcognos/rv/images/action_view_html.gif",
            "M": {
                "id": "runInwindow.oCV_NS_",
                "Y": "dropDown",
                "IS": [{
                    "I": {
                        "N": "viewInHTML",
                        "A": "window.oCV_NS_.getRV().viewReport('HTML');",
                        "E": "以 HTML 格式查看",
                        "C": "/ibmcognos/rv/images/action_view_html.gif"
                    }
                },
                {
                    "I": {
                        "N": "viewInPDF",
                        "A": "window.oCV_NS_.getRV().viewReport('PDF');",
                        "E": "以 PDF 格式查看",
                        "C": "/ibmcognos/rv/images/action_view_pdf.gif"
                    }
                },
                {
                    "I": {
                        "N": "viewInXML",
                        "A": "window.oCV_NS_.getRV().viewReport('XML');",
                        "E": "以 XML 格式查看",
                        "C": "/ibmcognos/rv/images/action_view_xml.gif"
                    }
                }]
            }
        }
    },
    {
        "I": {
            "N": "viewInExcel",
            "E": "导出Excel",
            "C": "/ibmcognos/rv/images/action_view_excel_options.gif",
            "M": {
                "id": "viewInExcelwindow.oCV_NS_",
                "Y": "dropDown",
                "IS": [{
                    "I": {
                        "N": "viewInspreadsheetML",
                        "A": "window.oCV_NS_.getRV().viewReport('spreadsheetML');",
                        "E": "以 Excel 2007 格式查看",
                        "C": "/ibmcognos/rv/images/action_view_excel_2007.gif"
                    }
                },
                {
                    "I": {
                        "N": "viewInXLWA",
                        "A": "window.oCV_NS_.getRV().viewReport('XLWA');",
                        "E": "以 Excel 2002 格式查看",
                        "C": "/ibmcognos/rv/images/action_view_excel_2002.gif"
                    }
                },
                {
                    "I": {
                        "N": "viewInCSV",
                        "A": "window.oCV_NS_.getRV().viewReport('CSV');",
                        "E": "以 CSV 格式查看",
                        "C": "/ibmcognos/rv/images/action_view_csv.gif"
                    }
                }]
            }
        }
    }]
}); < /script>

 

思考:


页面初始化的的这段脚本很重要,但这段源码是怎么放进运行页面的呢?是读取的安装文件里某个模版文件,还是这段字符串封装生成的。如果是前者,那么我们可以通过修改那个模版来控制其显示,但目前为止,这个文件没有找到;
参与16

15同行回答

写忆写忆软件开发工程师计算机公司
如果有提示页面的话,在主页面添加html重写settoolbar函数,运行后,发现经提示页面进入主页面后,按钮还是存在的,在主页面点后,按钮就不存在了。所以请问楼主,如果有提示页面,怎么办?我试着把html标签也放在提示页面,但是运行后主页面报脚本错误,说null为空或不是对象。真郁闷!...显示全部
如果有提示页面的话,在主页面添加html重写settoolbar函数,运行后,发现经提示页面进入主页面后,按钮还是存在的,在主页面点后,按钮就不存在了。所以请问楼主,如果有提示页面,怎么办?我试着把html标签也放在提示页面,但是运行后主页面报脚本错误,说null为空或不是对象。真郁闷!收起
互联网服务 · 2013-08-12
浏览1716
sakthysakthyBI开发工程师华为技术有限公司
学习下~显示全部
学习下~收起
IT分销/经销 · 2013-02-20
浏览1667
cognos2010cognos2010系统分析师IBM
不错啊,学习了!!!!显示全部
不错啊,学习了!!!!收起
银行 · 2012-11-15
浏览1680
cdn007cdn007软件架构设计师CA
不错,善于总结分享!显示全部
不错,善于总结分享!收起
互联网服务 · 2012-11-14
浏览1698
lgtq1983lgtq1983软件开发工程师西安华为
很好,谢谢分享!显示全部
很好,谢谢分享!收起
互联网服务 · 2012-11-12
浏览1695
yy2314yy2314软件开发工程师hl
好贴 顶一个显示全部
好贴 顶一个收起
互联网服务 · 2012-11-12
浏览1815
zuiaizhiqiuzuiaizhiqiu软件开发工程师成都途商网络科技有限公司
谢谢指点。显示全部
谢谢指点。收起
互联网服务 · 2012-11-08
浏览1812
junix2008junix2008项目经理耐普罗塑胶五金制品(深圳)有限公司
那是long long ago的一个贴了,好久没用了已经基本忘记了,现在回头去cognos目录下看了一下,记得当时是在webcontent\rv目录下的那些js文件里找到这些定义的,楼主可以在那个目录下全文搜索这些函数,看看在哪个js文件里,然后你有时间就去研究吧,只要你有耐心。:lol...显示全部
那是long long ago的一个贴了,好久没用了已经基本忘记了,现在回头去cognos目录下看了一下,记得当时是在webcontent\rv目录下的那些js文件里找到这些定义的,楼主可以在那个目录下全文搜索这些函数,看看在哪个js文件里,然后你有时间就去研究吧,只要你有耐心。:lol收起
互联网服务 · 2012-11-08
浏览2014
jim1983jim1983项目经理中科软
好贴 认真思考的人 才会进步  非常不错显示全部
好贴 认真思考的人 才会进步  非常不错收起
IT咨询服务 · 2012-11-07
浏览1833
爱上零点半爱上零点半软件开发工程师1234
这个只针对8版本的吧,10版本的可以不呀?:P显示全部
这个只针对8版本的吧,10版本的可以不呀?:P收起
互联网服务 · 2012-11-07
浏览1829

提问者

zuiaizhiqiu
软件开发工程师成都途商网络科技有限公司
擅长领域: 大数据商业智能cognos

相关问题

问题状态

  • 发布时间:2012-10-13
  • 关注会员:1 人
  • 问题浏览:11705
  • 最近回答:2013-08-12
  • X社区推广