ireport 分页

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Ireport 分页介绍

功能介绍

基于ireport 3.7.6版本介绍ireport如何进行分页

开发步骤

1. 在ireport 报表中添加分页需要的变量

2. 设定首页,上一页,下一页,末页的超链接

3. 用jasper调用设定好的报表文件

开发示例

分页信息

当前显示1- 10条共32条第1页共4页首页上一页下一页末页

1、设置当前分页的显示信息

1.1. 设置当前显示1- 10条

步骤

1.1.1 拉一个text Field 右击点击edit expression

1.1.2 在Expression editor 框入输入

1.1.3 "当前显示"+($V{REPORT_COUNT}-$V{PAGE_COUNT}+1)+"- "+$V{REPORT_COUNT}+"条"

($V{REPORT_COUNT}-$V{PAGE_COUNT}+1) 是指当前正在处理的第几条记录数减去当前页显示的条数+1 就是当前页的起始记录数

注意点: text Field 的属性Evaluation Time 这里需要指定Column

1.1.4 点击Apply

步骤1.1.3用的的变量是ireport的内置变量

$V{PAGE_NUMBER} : 代表当前页数(可以是当前页码也可以是总页数,通过TextField的属性Evaluation Time决定的Now (得到的是当前页码)Report (得到的是总页数)

$V{PAGE_COUNT} 当前页面中记录的数目

$V{REPORT_COUNT} 指示当前正在处理的是第几条记录

1.2设置共32条

步骤

1.2.1 拉一个text Field 右击点击edit expression

1.2.2 在Expression editor 框入输入"共"+$V{REPORT_COUNT}+"条"

注意:这里需要的是得到总条数所以text Field 的属性Evaluation Time 这里需要指定Report 1.2.3.点击Apply

1.3. 设置第1页

步骤

1.3.1 拉一个text Field 右击点击edit expression

1.3.2在Expression editor 框入输入"第"+$V{PAGE_NUMBER}+"页"

注意:所以text Field 的属性Evaluation Time 这里需要指定Now

1.3.3点击Apply

1.4. 设置共3页

步骤

1.4.1 拉一个 text Field 右击点击 edit expression

1.4.2 在Expression editor 框入输入 "共"+$V{PAGE_NUMBER}+"页"

注意:所以text Field 的属性Evaluation Time 这里需要指定Report

1.4.4.点击Apply

以上的变量仅供参与如有更好更简单的表达式可以补充。

2 设置分页信息转页(首页上一页下一页末页)

步骤

2.1 设置首页

2.1.1拉一个text Field 右击点击edit expression

2.1.2在Expression editor 框入输入“首页”

2.1.3 右击text Field 点击Hyperlink 将Hyperlink target 改为Self,Hyperlink Type 改为Reference

2.1.4 在Hyperlink Reference Expression框中输入"testpage.jsp?page=0"

2.1.5 点击close

其它设置的步骤一样只是在1.4步骤的输入的内容不一样以下是各项的内容

上一页“testpage.jsp?page="+($V{PAGE_NUMBER}-1)

下一页“testpage.jsp?page="+($V{PAGE_NUMBER}+1)

末页"testpage.jsp?page=lastPage"

上一页下一页不难理解就是当前页-1+1 这么简单

末页因为变量中无法得到最后页的页码(本人是无法得到)所以本人就想到以字符串lastPage 来标识是最后一页在调用jasper代码中去做处理(如果你有更好的方式请补充)

实例代码:工程中代码path:/drivingMonitor/web/view/situation/llsdi.jsp

下面的代码是jsp 中的java代码以上加红部分为处理分页的代码

<%@page language="java"import="java.util.*" pageEncoding="utf-8"%>

<%@page import="java.util.*"%>

<%@page import="java.io.*"%>

<%@page import="org.springframework.jdbc.datasource.*"%>

<%@page import="net.sf.jasperreports.engine.*"%>

<%@page import="java.sql.*"%>

<%@page import="javax.sql.*"%>

<%@page import="net.sf.jasperreports.engine.export.*"%>

<%@page import="net.sf.jasperreports.engine.util.JRLoader"%>

<%@page import="org.springframework.web.context.*"%>

<%@page

import="org.springframework.web.context.support.WebApplication ContextUtils"%>

<%@page import="org.codehaus.xfire.spring.SpringUtils"%>

学习ireport 测试用

<%

// 取到编译后的jasper文件

File reportFile=new File(application.getRealPath("jasper/test.jasper"));

// 向报表中定义的参数赋值

Map parameters = new HashMap();

Integer i = new Integer(8);

parameters.put("pjId", i);

JasperReport jasperReport = (JasperReport) JRLoader

.loadObject(reportFile.getPath());

int pageIndex = 0;

int lastPageIndex = 0;

JasperPrint jasperPrint = null;

//因为是分页所以信息不能实时要改在缓存中,我这里把他放在session

//一进来先从session 中去取

jasperPrint=(JasperPrint)session.getAttribute("jasperPrint"); //如果jasperPrint 为null 说明session 不存在则获得jasperPrint 并保存到//session中

if (jasperPrint == null) {

TestDataSource dataSoruce = new TestDataSource();

jasperPrint =

相关文档
最新文档