Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8236662
  • 博文数量: 444
  • 博客积分: 10593
  • 博客等级: 上将
  • 技术积分: 3852
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-09 15:26
文章分类

全部博文(444)

文章存档

2014年(1)

2013年(10)

2012年(18)

2011年(35)

2010年(125)

2009年(108)

2008年(52)

2007年(72)

2006年(23)

分类: 系统运维

2012-03-07 11:34:41

原文地址:
原作者:junix2008
想不想把报表顶上的系统toolbar里特定的几个按钮搬到报表页面中或表头上去,然后关闭系统toolbar?

前几天用户在查看报表的时候想要全部显示按不同方式view的按钮,但是我又不想开放上面那个系统的toolbar给用户,怕他们没事乱点,于是就想要是能把toolbar里的那个view按钮和下面的菜单搬到表头里去,然后依然把toolbar关闭就好了,

原来的按不同格式导出按钮在toolbar上面。
1.GIF


在查看了报表的source code后,发现里面有一个setTtoolbar的函数是写toolbar按钮的,于是找到服务器的webcontent目录,想去看看那个setToolbar函数是干什么的,结果不看还好, 一看人就晕了。在那个目录下搜了几十个js文件出来了,没办法,只好一个个的打开研究,在看的天昏地暗,老眼昏花,头昏脑涨。。。。。。之后,最后终于搞明白怎么回事了

其实实现方法非常简单,一共就四条语句。     再一次想到那句话。。。。要是早知道吃最后一个饼子的时候吃饱的,那我就不吃前面那些饼子了,唉。。。。。。。

实现步骤:
一、在页面上拖一个html控件,在里面放一个div,设置div的id
二、然后在后面写上四条js语句:

  1. var oToolbar = new CViewerToolbar();
  2. oToolbar.init();
  3. oToolbar.load();
  4. oToolbar.draw();
复制代码


第一条语句是创建一个toolbar实例,
然后第二条语句初始化对象,初始化的时候需要提供toolbar control参数,这个参数是必须是一个json字符串,这个json字符串可以直接从报表的source code里拷贝,注意截取完整就可以了。注意把json字符串里的divId改成上面设定的ID
第三条语句不知道有什么用,在原来的js里有这句,如果不load就下面的draw就不出来。
第四条语就是画toolbar了.

完成上面的工作后,就可以在应用程序里的报表url里加上cv.toolbar=false关闭toolbar,这样用户可以使用系统toolbar的特定功能,但是其他的工具都给屏蔽了,而且可以把系统的header和toolbar关掉,报表也美观了。

下面是一个具体的示例源码,只取view按钮,可以拷贝直接使用,就是只显示view图标和下面的按不同format打开报表的菜单。



复制代码


把导出按钮“移到”报表表头后的效果
2.GIF

因为这个tool button是在报表页面里转换成其他的格式比如PDF后原页面就成了空白,这样就转不回来了,为了避免这样,可以再稍微改一下那个json字符串,把里面的oCV_NS_.getRV().viewReport函数换成一个window.open函数,这样就会打开一个新窗口,原报表不变。

另外注意那个oCV_NS_,表示这个是在cognos connection里运行时有效,如果是在RS编辑报表的时候测试运行,把 _NS_ 换成 RS 即可。

抛砖引玉,大家在此基础上各显神通吧。
阅读(2721) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~