缘起:
前两天FIR1987问我关于自定义模板的问题,帖子的地址如下
http://www.cognoschina.net/club/thread-14078-1-1.html我整理了一下,分享给大家
正文:
定义一个模板,会为报表开发节省很多空间,可以在模板中包含一些通用的页眉页脚,样式JavaScript脚本等。
在ReportStudio中可以将报表转换为报表模板,并保存在cognos connection中,但这样有可能会有人误操作把报表模板改动,而为其他人的引用带来不必要的麻烦。
其实我们可以通过修改Cognos的文件使其在新建报表时引用模板,而不必打开模版文件。效果如下图所示,在模板中多了一个“冯东测试”
我们先要获取报表模板的XML定义,我们可以将现有报表转换为模板,也可以直接创建一个报表模板。
假定我需要创建一个包含饼图、柱状图和一个交叉表的报表模板,为了保持联动,这三个对象共用一个查询。
新建一个报表模板,创建一个table进行布局,拖入2个图标一个交叉表,并设置共用一个查询,效果如下图所示
当然,可以在页眉或者页脚处增加一些JS脚本和CSS样式。
模板设计完成后,在ReportStudio菜单栏 点击 工具-->复制报表到剪切板
打开UE,新建一个空白页,将模板的xml定义粘贴进去。
删除xmlns和template的定义删除,大致的格式如下:
……省略具体内容
……省略具体内容
上面标红的modelPath是需要注意的,新创建的模板定义中不含这行,是我单独加的,如果不加这行, 模板打开后,左侧的package为空,需要重新选择package。加了这行,你在哪个package调用的ReportStudio,默认就打开哪个package。
前面说了半天是模板的内容,内容有了,我们下面来说一下把这个内容放到哪。
我这里以CGI方式为例,如果是Servlet方式,请修改p2pd文件夹下相应路径的文件。
1、打开C8_locationwebcontentpatres templates.xml
在name="Blank"的template节点后增加一个新的template节点
….模板的XML定义
template>
保存为UTF-8格式(这非常重要,如果不是UTF8格式,模板里面的中文会解析报错)
2、打开C8_locationwebcontentpatresResources.xml
找到id="New"的listView 节点,在listItems节点下增加一条记录
其中templateName设置应和templates文件中新增的模板名称一致
idsLabel 是新建页面中模板的名称,需要在reportstudio_en.xml和reportstudio_zh-cn.xml中设置
3、打开C8_locationwebcontentpatresreportstudio_zh-cn.xml
找到空白(约1666行处),在它下面增加一行
测试模板
如果不配置这一行,在新建报表时会报下面的错误
注意也需要修改reportstudio_en.xml
保存修改后的文件,重新进入ReportStudio。就会多了一个刚才创建的模板。
附件中是我上面实现的例子文件
大家可以下载覆盖到对应文件夹下试一下,先做好之前文件的备份附件:
res.rar (55.3 KB)
收起