帆软报表之 超级链接-2

3.2 主模板设置
1)打开模板
打开模板:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Advanced\数据钻取主报表.cpt。
2)修改数据集
为了方便查看数据,我们只取10条数据,因此将sql语句修改为:SELECT * FROM 订单 limit 10
3)表样修改
选中一些单元格,点击合并单元格,设置此单元格的控件类型为网页框。
表样如下:
0
将网页框控件名定义为:orderdetail,在地址中输入${servletURL}?
添加一个参数reportlet,值为:doc/SpecialSubject/HyplinkReport/数据钻取到当前模板子报表.cpt,这样就可以在网页框里打开3.1里的模板;
并定义一个参数ID把点击的订单ID传到子模板中,因为第一次预览模板没有点击超级链接ID编号,传递到子模板参数为空,没有数据显示,所以这边通过判断默认显示10001的值,公式:if(len($ID)==0,10001,$ID)
设置的网页框如下:
0
4)修改超级链接
点击A2单元格,将网络报表修改为当前模板的doc\SpecialSubject\HyplinkReport\数据钻取到当前模板主报表.cpt,以&op=write的方式打开,并将链接打开于选择当前窗口,添加参数ID=$$$,如下图所示:
0
5)保存模板
保存模板,具体的模板可参考:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\HyplinkReport\数据钻取到当前模板主报表.cpt。
3.3 效果查看
点击填报预览,即可查看效果,效果如上图所示。
在线查看示例效果请点击:数据钻取到当前模板主报表.cpt
 
超级链接之如何传递参数到网页中
1. 描述
在制作模板时,可能有时候需要将报表中的参数或者某些值传递到自己的网页中做一些处理,此时要如何将报表中的值传递到网页中呢?
0
2. 思路
通过设置超级链接到网页并设置参数,然后在网页中通过request.getParameter("超级链接中的参数名")获取参数即可。
3. 示例
3.1 模板准备
新建数据集ds1:SELECT * FROM 运货商
按下图设计模板样式:
0
下面要做的是超级链接传递值设置和网页中获取值设置。
3.2 超级链接设置
右击修改所在的D2单元格,点击超级链接,增加一个网页链接,具体设置如下图:
0
已完成模板请参照%FR_HOME%\WebReport\WEB-INF\reportlets\doc\SpecialSubject\HyplinkReport\超链传递网页参数.cpt
3.3 网页获取参数设置
获取传递的参数
  1. <%    
  2. String ID = request.getParameter("ID");    
  3. String TELEPHONE = request.getParameter("TELEPHONE");    
  4. %>   
完整的代码:
  1. <%@ page language="java" pageEncoding="GBK"%>    
  2. "-//W3C//DTD HTML 4.01 Transitional//EN">    
  3. <%    
  4.    String ID = request.getParameter("ID");    
  5.    String TELEPHONE =request.getParameter("TELEPHONE");    
  6. %>    
  7.     
  8.       
  9.         
  10.       
  11.       
  12.     "350" border="0" cellspacing="1" cellpadding="5px">    
  13.           
  14.         "130">运货商编码:"208">"text" id="ID" value="<%=ID %>" disabled/>    
  15.           
  16.           
  17.       电话:"text" id="TELEPHONE" value="<%=TELEPHONE %>"/>    
  18.           
  19.        
  20.       
  21.   
将其命名为update1.jsp并保存到%TOMCAT_HOME%\webroot目录下。
3.4 效果查看
启动tomcat服务器,预览模板,点击超级链接即可看到对应的值被传递到网页中了,如上效果图。
在线查看示例效果请点击超链传递网页参数.cpt
超级链接到网页传递的中文乱码
1. 问题描述
在使用超级链接到网页传递参数时,若值中有中文,会出现乱码,如下图所示,那么如何传递让传递的中文值不出现乱码呢?
0
2. 实现思路
由于FR中的超级链接传递过来的参数被编码过了,所以在jsp页面中获取该参数时,需要通过java.net.URLDecoder.decode进行解码。
3. 示例
打开上一节中的模板%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\HyplinkReport\超链传递网页参数.cpt
3.1 修改超级链接
在超级链接中增加一个参数,参数名为NAME,参数值为=B2,如下图:
0
已完成模板请参照%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\HyplinkReport\超链到网页传递中文转码.cpt
3.2 网页修改
在获取参数中增加如下代码:
  1. String NAME = java.net.URLDecoder.decode(request.getParameter("NAME"),"UTF-8");  //将NAME参数的值进行解码    
注:若ID和TELEPHONE也有中文,也可以通过此方法进行反编码。
完整代码如下:
  1. <%@ page language="java" pageEncoding="GBK"%>    
  2. "-//W3C//DTD HTML 4.01 Transitional//EN">    
  3. <%    
  4.    String ID = java.net.URLDecoder.decode(request.getParameter("ID"),"UTF-8");    
  5.    String NAME =java.net.URLDecoder.decode(request.getParameter("NAME"),"UTF-8");    
  6.    String TELEPHONE = java.net.URLDecoder.decode(request.getParameter("TELEPHONE"),"UTF-8");    
  7. %>    
  8.     
  9.       
  10.         
  11.       
  12.       
  13.     "350" border="0" cellspacing="1" cellpadding="5px">    
  14.           
  15.         "130">运货商编码:"208">"text" id="ID" value="<%=ID %>" disabled/>    
  16.           
  17.           
  18.         公司名称:"text" id="NAME" value="<%=NAME %>"/>    
  19.           
  20.           
  21.       电话:"text" id="TELEPHONE" value="<%=TELEPHONE %>"/>    
  22.           
  23.        
  24.       
  25.   
3.3 效果查看
启动tomcat服务器,预览模板,点击超级链接,可以看到对应的中文正常显示了,如下图:
0
 在线查看示例效果请点击超链到网页传递中文转码.cpt
单元格间联动
1. 描述
在查看报表时,可能某列的数据比较重要或者内容比较多的情况下,希望点击该行的某个数据时让其详细信息单独显示在数据的下方,并且不希望查数据库,此时要如何处理呢?
0
如上图,我们点击订单号,下面的收货人地址显示对应订单号的货主城市+货主地址。
2. 思路
通过给单元格增加超级链接-JavaScript,在js中给下面对应的单元格赋值。
3. 示例
下面我们以一个例子为例来看下如何实现效果。
3.1 打开模板
打开模板:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Primary\DetailReport\改变显示值.cpt
3.2 增加数据列
0
如上图所示将货主地址拖入到H2单元格中,然后点击高级>自定义显示将其修改为:货主城市+$$$,即让其显示为"货主城市+货主地区",最后将该单元格的列宽设置为0。
注:"货主城市+$$$"中的货主城市是数据列。
3.3 固定单元格设置
由于要给单元格赋值并且在扩展数据的下方,因此若要在固定位置显示值就要做如下几个设置。
1)每页显示固定条数
我们要让每一页固定显示的条数相同,因此要给单元格增加行后分页的条件属性。
给A2单元格增加行后分页的条件属性,公式条件类型选择公式,并在公式中输入:(row()-1)%10 == 0即每页显示10条扩展出的数据。
2)重复标题行和结尾行设置
重复标题行:右击行序号1,选择设置重复标题行。
重复结尾行:选中3、4行,右击选择设置重复结尾行。
最终的表样如下:
0
3.4 超级链接设置
下面我们要做的就是给A2单元格设置超级链接,使点击A2单元格时,对应的隐藏的H2单元格的内容显示在B4单元格中。
右击A2单元格,选择超级链接,点击JavaScript,具体设置如下图:
0
 
  1. var display=$("[id^='B13-0']");   //获取BS端的B13单元格    
  2. display.text(address);   //给B13单元格赋值    
注:这边是给BS端对应的单元格赋值,由于A2单元格是扩展的并且固定显示10行数据,因此在模板中的B4单元格在BS端就是B13单元格了。
3.5 分页预览
点击分页预览, 点击对应的订单ID可以看到下面的显示的是对应的详细收货人地址,如上效果图。
已完成的模板可参考:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\HyplinkReport\单元格间联动.cpt。
在线查看示例效果请点击CellsRelate.cpt
 
数据钻取并返回
1. 描述
通过主表超级链接钻取到子报表中,希望子报表中有个“返回上一页”,当主表中有参数时,点击“返回上一页”能够使用之前使用的参数进行查询数据,且不需要再次点击查询按钮,如下图所示:
0
2. 思路
子表中通过设置超级链接-JavaScript实现并定义参数,主表中需要将参数界面中的点击参数前不显示报表内容勾选掉即可。
3. 示例
下面我们来看下具体的实现过程。
3.1 主报表设置
1)打开模板
打开模板:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Advanced\数据钻取主报表.cpt。
2)参数设置
增加一个名为orderID的报表参数,设置其默认值为10001,如下图: 
0
给订单ID所在的数据列增加一个订单ID = $orderID的过滤条件,如下图:
0
3)参数界面设置
将参数orderID的控件类型设置为下拉框,其实际值与显示值为订单表中的订单ID,如下图:
0
标签值设置为订单编号,如下图:
0
将点击参数前不显示报表内容勾去,如下图所示:
0
已完成模板请参照%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\HyplinkReport\钻取并返回主报表.cpt
3.2 子报表设置
1)打开模板
打开模板:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Advanced\数据钻取子报表.cpt。
2)超级链接设置
在某个空白单元格中填入返回上一页,右击选择超级链接,点击增加JavaScript,具体设置如下:
0
添加如下JS事件:
  1. location=FR.cjkEncode("?viewlet=doc/SpecialSubject/HyplinkReport/钻取并返回主报表.cpt&orderID=")+orderID;  
已完成模板请参照%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\HyplinkReport\钻取并返回子模板.cpt

 

3.3 效果查看 
分页预览主报表,点击超级链接到子报表后,在点击返回上一级即返回到主报表中,如上效果图。
 

 

posted @ 2022-01-05 15:36  倾晴雨轩  阅读(3526)  评论(0编辑  收藏  举报