随笔-15  评论-79  文章-0  trackbacks-0

 cognos中有列表和图形,但是表和图之间总是孤立的,刷新页面也都是全页面刷新,于是经理在想,是否有个方法能在点击cognos列

表时旁边的cognos图表能够实时的变动,类似flex中的绑定效果。在老板的强烈催促下,经理也没什么时间去网上去找去问,觉得凭自己以前

的一些J2EE老底子加上report studio中强大的HTML项目貌似可以搞定,于是开搞了...
 首先给大家看看数据库

一、先用report studio建立一个带参数的cognos饼图报表(这里可以随便是什么图),报表灰常简单

设置参数名为par3,并把此报表保存为a1
二、再用report studio建立一个列表,如图

经理在这里多用了html项目,因为cognos在页面上封装的太好了,只能这样拼凑脚本。
基本的原理就是在列表旁边放置一个html项目,其内容是一个iframe,其连接也就是刚刚做好的那个带参数的饼图报表。
然后在列表中放置一个label,在label中设置点击事件出来iframe链接(其实这样就换了一个参数)及重新载入。

其中
1的代码如下,他主要是点击的列表触发的事件

1<script type="text/javascript">
2    function changeframe(par)
3    {
4        sname="http://localhost/cognos8/cgi-bin/cognos.cgi?b_action=cognosViewer&ui.object=/content/package[@name='aa']/report[@name='a1']&ui.action=run&run.prompt=false&p_par3="+par;
5        frameChart.location.href=sname;
6    }

7</script>

 

2到6主要就是定义一个含有点击事件的label
2的代码为

1<u><label onclick="changeframe('


3其实是一个报表表达式,它是参数

1[query1].[arr2]


4的代码为

1');"  style="width:100%;height:100%" >


5也是一个报表表达式,他是设置该列显示的内容

1[arr2]


6的代码为,他收个尾

1</label ></u>


7的代码主要是iframe,然后就是刷新等待时候的一个等待提示
7的代码为

 1<iframe frameborder="0" id="frameChart" src="" scrolling="no" height="450" width="100%"></iframe>
 2<div id="loading" style="display:block; padding:100px 0 100px 0;text-align:center;color:#999999;font-size:12px;">
 3      页面加载中
 4    </div>
 5<script type="text/javascript">     
 6     var  a  = document.getElementById("frameChart");   
 7     var b  = document.getElementById("loading");   
 8     a.style.display =  "none";                     
 9     b.style.display = "block";                     
10     
11        if  (window.ActiveXObject)   {   
12
13
14     a.onreadystatechange =  function()     
15     {   
16        if (this.readyState=="complete")   
17         {                                                                   
18             b.innerHTML  =   "";   
19              b.style.display = "none";   
20             a.style.display  = "";   
21          }
   
22     }
 
23     }
else
24     a.style.display =  "block";                     //隐藏 
25     b.style.display = "none"
26     }

27  </script>


拼滴我累死了.....

OK,我们来看看效果
我先点击一下第一个单元格

再点击第二个

注意,列表不会刷新哦,有点像ajax的效果。


后来想想,其实功能挺简单的。
例子比较简陋,只是想传达一个思想,希望以后大家有好东西能一起交流。

posted on 2010-08-20 17:37 张元Won 阅读(4292) 评论(4)  编辑  收藏 所属分类: Cognos

评论:
# re: cognos列表与图形联动效果[未登录] 2010-10-28 18:37 | apple
我试过了但是有个问题,第三个和第5个html引用的报表表达式没有起到作用是由于什么原因呢,第5个控制显示内容但是显示的是字符串并没有当成报表数据项显示啊,第三个html同样是这个问题,我是按照你的方法写的结果却没有你的效果不理解  回复  更多评论
  
# re: cognos列表与图形联动效果[未登录] 2010-10-29 09:00 | apple
我解决了因为是新手还要向您多多学习,谢谢  回复  更多评论
  
# re: cognos列表与图形联动效果 2010-10-30 00:14 | え经理え
不好意思,今天才看到。应该是不会有问题的~ 拼js,多看看左右的括号!!@apple
  回复  更多评论
  
# re: cognos列表与图形联动效果[未登录] 2012-08-29 15:48 | decode360
不用拼接,可以写到一起的。把HTML的类型换成字段就可以。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: