ireport 分页

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.WebApplicationContextUtils"%>
<%@page import="org.codehaus.xfire.spring.SpringUtils"%>  
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>
 <head>      <title>学习ireport 测试用</title>
<%   
 // 取到编译后的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 =






JasperFillManager.fillReport(jasperReport,       parameters, dataSoruce);
    session.setAttribute("jasperPrint", jasperPrint);    }
    JRHtmlExporter exporter = new JRHtmlExporter();    if (jasperPrint.getPages() != null) {
    lastPageIndex = jasperPrint.getPages().size() - 1;    }
   String pageStr = request.getParameter("page");    try { 
 
 
 
pageIndex = Integer.parseInt(pageStr);
    //从ireport 传来的PageIndex是从
1
开始,而
JRExporterParameter.PAGE_INDEX是从0开始的     if (pageIndex > 0) {
   
 pageIndex = pageIndex - 1;
    }
   } catch (Exception e) {
 
 
 
//如果得到的是字符串,转换失败 进入到这里
   // 如果字符串==lastPage 则反lastPageIndex的值赋给pageIndex     if ("lastPage".equals(pageStr)) {      pageIndex = lastPageIndex;     }    }
    if (pageIndex < 0) {     pageIndex = 0;    }
    if (pageIndex > lastPageIndex) {     pageIndex = lastPageIndex;
   }
 
 
 
exporter.setParameter(JRExporterParameter.PAGE_INDEX,
pageIndex);
   exporter 
 
 
 
 
.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);
   exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);     exporter.setParameter(
     JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, 
 
 
  Boolean.FALSE);






   exporter.exportReport();
 
%>
   </head>  <body> 
</body>
</html>   


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值