cognos列表与图形联动效果

cognos列表与图形联动效果

 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的效果。


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

你可能感兴趣的:(cognos列表与图形联动效果)