动态设置页面显示的数据行数

.需求描述

通常设置一个报表在页面中显示的数据行数,是在设计报表时,在报表属性中将报表的分页方式设定为按行分页,指定页面显示的数据行数,如何能更灵活的取更改页面显示的数据行数呢?

.解决思路

使用直接指定报表模板名的方式发布报表方式,不能满足我们的需求,可以尝试润乾支持的definebean方式发布报表,通过报表定义对象中的getPrintSetup(); 获得到报表的打印属性,然后对其 设置按数据行数分页且每张纸打印的数据行数。

.实现步骤

1.报表模板设计如下图1所示,在报表属性中设置其分页方式为按行分页,每页行数为20行。

2.参数报表设计如下图所示。

3.showReport.jsp中,做如下操作:

1)从参数缓冲池中取到参数pgc的值,即页面动态选择的报表展示的数据行数。

String reportParamsId=request.getParameter(“reportParamsId”);

Hashtable params = null;

String pgc=null;

if(!”".equals(reportParamsId) && reportParamsId != null){

params = com.runqian.report4.view.ParamsPool.get( reportParamsId );

String paramValue = (String) params.get(“pgc”);

if(paramValue!=null)

pgc = paramValue;

2)使用reportDefine方式发布报表

<%

String filePath = application.getRealPath(reportFileHome+ File.separator +report);

ReportDefine rd = (ReportDefine)ReportUtils.read(filePath);

PrintSetup ps=rd.getPrintSetup();

ps.setRowNumPerPage(Integer.parseInt(pgc));

String rdID= “reportDefine”+String.valueOf((newDate()).getTime());

request.setAttribute(rdID,rd);

%>

<report:html name=”report1″

srcType=”defineBean”

beanName=”<%=rdID%>”

funcBarLocation=”top”

exceptionPage=”/jsp/myError.jsp”

/>

5.发布报表页面效果如下图所示。

.需求总述

使用DefinedBean方式发布报表,除了动态修改报表指定数据行数外,还便于用户自定义数据源、自定义参数和宏等。不过对于本例来说,还需注意,每次发布报表的beanName的值需要不同,本例中使用String rdID= “reportDefine”+String.valueOf((new Date()).getTime())

热门文章