壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 485|回复: 0

cognos列表与图形联动效果

[复制链接]
发表于 2012/3/14 17:49:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
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  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的效果。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 15:27 , Processed in 0.014059 second(s), 16 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表