润乾报表统计图联动刷新

统计图的联动是指统计图之间的数据根据点击图形上的不同区域(例如柱形图中的柱子,饼形图中的图块)来做动态变化.

通常情况下,我们在报表中放入统计图是为了对数据进行展现,那么,我们如何来利用统计图来完成联动功能呢?

首先,我们制作两张带有统计图的报表:

报表一:这张报表的功能是统计货主地区的订单数分布.

润乾报表统计图联动刷新_第1张图片

报表二:

这张报表的功能在于接收点击报表一传过来的地区参数后,做城市明细订单分布的展现.

润乾报表统计图联动刷新_第2张图片

由于报表二要接收报表一传过来的参数来对数据进行过滤,所以我们要在报表二中增加参数:

润乾报表统计图联动刷新_第3张图片

参数X代表的是地区值.

同样我们也要在报表二的数据集中来对参数X进行设置:

润乾报表统计图联动刷新_第4张图片

润乾报表统计图联动刷新_第5张图片

接着,我们就要对报表一的联动位置进行设置.我们这里采用的是超链接url传参数:

我们这里以集算器统计图(柱图)为例:

润乾报表统计图联动刷新_第6张图片

这里的设置是:当点击图形中的柱子,会触发一个自定义的down()方法,并把横纵坐标值当作入参进行传递,参数名分别为@x(横轴)@z(纵轴).

最后,我们写两个页面来把这几张报表进行展现:

主体jsp,里面放两个iframe,每个iframe里放一个报表.

%@ page contentType="text/html;charset=GBK" %>
<%@ taglib uri="/WEB-INF/runqianReport4.tld" prefix="report" %>
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%@ page import="com.runqian.report4.usermodel.Context"%>


联动demo


<%
 request.setCharacterEncoding( "GBK" );
 %>





然后,在定义一下展现报表一和报表二的jsp,其中要包含前面提到的自定义js函数down():

<%@ page contentType="text/html;charset=GBK" %>
<%@ taglib uri="/WEB-INF/runqianReport4.tld" prefix="report" %>
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<%@ page import="com.runqian.report4.usermodel.Context"%>



<%
 request.setCharacterEncoding( "GBK" );
 String report = request.getParameter( "raq" );
 String reportFileHome=Context.getInitCtx().getMainDir();
 StringBuffer param=new StringBuffer();
 
 //保证报表名称的完整性
 int iTmp = 0;
 if( (iTmp = report.lastIndexOf(".raq")) <= 0 ){
  report = report + ".raq";
  iTmp = 0;
 }
 
 Enumeration paramNames = request.getParameterNames();
 if(paramNames!=null){
  while(paramNames.hasMoreElements()){
   String paramName = (String) paramNames.nextElement();
   String paramValue=request.getParameter(paramName);
   if(paramValue!=null){
    //把参数拼成name=value;name2=value2;.....的形式
    param.append(paramName).append("=").append(paramValue).append(";");
   }
  }
 }

 //以下代码是检测这个报表是否有相应的参数模板
 String paramFile = report.substring(0,iTmp)+"_arg.raq";
 File f=new File(application.getRealPath(reportFileHome+ File.separator +paramFile));

%>


<% //如果参数模板存在,则显示参数模板
 if( f.exists() ) {
 %>
 
 
 
 

  
   needSubmit="no"
   params="<%=param.toString()%>"
   
  />
 

 <% }
%>



 
 

  
   funcBarLocation="top"
   needPageMark="yes"
   generateParamForm="no"
   params="<%=param.toString()%>"
   needSaveAsExcel="yes"
   needImportExcel="yes"
   exceptionPage="/reportJsp/myError2.jsp"
   generateCellId="yes"
   needSaveAsText="yes"
   width="1000"
  />
 



其中down()函数的作用就是,把参数传递并刷新页面.

最后我们来看一下页面效果:

润乾报表统计图联动刷新_第7张图片

点击某一个区域的柱子后,右侧数据进行过滤并展现城市明细数据:

润乾报表统计图联动刷新_第8张图片


你可能感兴趣的:(报表应用)