需求:
参数模板和参数报表联合发布,在页面初次加载的时候,只显示参数报表,不显示结果报表;当点击查询按钮后,结果报表才正确展现。
分析:
我们可以采用动态参数判断的方式实现,用宏接收参数并拼接到数据集中,但是这种方法是需要请求一次数据库,有时可能影响效率。所以我们来看一种使用frame的方式实现,当页面初次加载的时候,只显示参数模板,当点击查询后,通过发布参数报表标签中的resultPage属性,跳转到目标页面(发布结果报表页面)来达到效果。
制作步骤:
1、制作相关报表
使用任意参数模板和参数报表即可,本例中使用报表名为:params.raq 和 report.raq
2、新建frame.html文件
内容如下:
<frameset rows=”100,*” framespacing=”2″ frameborder=”yes” border=”2″
bordercolor=”#993300″>
<frame src=”params.jsp” name=”topFrame” scrolling=”NO” noresize >
<frame src=”" name=”reportFrame”>
</frameset>
3、 新建params.jsp文件
内容如下:
<%@ 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”%>
<html>
<body topmargin=0 leftmargin=0 rightmargin=0 bottomMargin=0>
<%
//定义点查询后跳转到的页面
String action = “/jsp/report.jsp”;
%>
<table id=param_tbl align=”center”><tr><td>
<report:param name=”form1″ paramFileName=”params.raq”
needSubmit=”no”
resultPage=”<%=action%>” //请注意此处的写法
target=”reportFrame”
/>
</td>
<td><a href=”javascript:_submit( form1 )”><img src=”../images/query.jpg” border=no style=”vertical-align:middle”></a></td>
</tr></table>
</body>
</html>
其中resultPage是润乾的发布参数报表标签中的属性,属性含义:提交参数后,显示报表的结果页面;属性取值:相对于应用根目录的页面URL。
4、 新建report.jsp文件
内容如下:
<%@ page contentType=”text/html;charset=GBK” %>
<%@ taglib uri=”/WEB-INF/runqianReport4.tld” prefix=”report” %>
<html>
<head>
<title></title>
</head>
<body>
<table align=”center”><tr><td>
<report:html name=”report1″ reportFileName=”report.raq”
funcBarLocation=”top”
needSaveAsExcel=”yes”
/>
</td>
</tr>
</table>
</body>
</html>
在浏览器中访问frame.html即可看到效果,与需求一致,至此,需求已完全满足。