jasperreports教程:[3]报表参数
jasperreports教程:[3]报表参数
工具/原料
jasperreports报表
方法/步骤
参数声明
参数声明很简单,如下所示:
<parameter name="exampleParameter" class="java.lang.String" />
name属性
parameter>元素的name属性是强制性的。它通过名称引用的参数在报表表达式。参数名应该是一个单词。它不应该包含任何特殊字符,如句号或逗号。
class属性
class属性也是强制性的,它指定了参数值的类名。它的默认值是java.lang.String。这是可以改变的,以在运行时可用任何类。不论报表参数的类型,引擎采用构造于$P{}标记是用来报表表达,从而使手工投射不必要。
内置参数
以下是预定义的报表参数,准备在表达式中使用:
Parameter Name
描述
REPORT_PARAMETERS_MAP
包含所有用户定义和内置参数映射
REPORT_CONNECTION
这指向用于JDBC数据源的用户提供java.sql.Connection中
REPORT_DATA_SOURCE
这是JRDataSource代表任一用户提供的实例中的内置的数据源类型或用户定义
REPORT_MAX_COUNT
这是一个java.lang.Integer的值,从而允许用户从数据源限制记录。
REPORT_SCRIPTLET
这指向net.sf.jasperreports.engine.JRAbstractScriptlet和包含报表的scriptlet,由用户提供的一个实例
REPORT_LOCALE
这是一个java.util.Locale的实例,包含资源包所需的语言环境
REPORT_RESOURCE_BUNDLE
这指向java.util.ResourceBundle对象和包含本地化的消息
REPORT_TIME_ZONE
这是一个java.util.TimeZone的实例,用于日期格式
REPORT_VIRTUALIZER
这是net.sf.jasperreports.engine.JRVirtualizerobject一个实例,以及用于网页的虚拟化(优化内存消耗)
REPORT_CLASS_LOADER
这是在报告充填过程中使用的加载,如图像,字体和子报表模板资源java.lang.ClassLoader的实例
IS_IGNORE_PAGINATION
如果设置为java.lang.Boolean.TRUE报告将在一个很长的网页和分页符来产生不会发生
报表生成
编译和执行使用常规Ant构建过程上面的文件。 build.xml文件中的内容(根据目录保存C:\tools\jasperreports-5.0.1\test)情况如下。
导入文件 - baseBuild.xml可以从环境设置章节中了解,并应放置在同一目录中的build.xml。
<?xml version="1.0" encoding="UTF-8"?>
<project name="JasperReportTest" default="viewFillReport" basedir=".">
<import file="baseBuild.xml" />
<target name="viewFillReport"
depends="compile,compilereportdesing,run"
description="Launches the report viewer to preview
the report stored in the .JRprint file.">
<java classname="net.sf.jasperreports.view.JasperViewer"
fork="true">
<arg value="-F${file.name}.JRprint" />
<classpath refid="classpath" />
</java>
</target>
<target name="compilereportdesing"
description="Compiles the JXML file and
produces the .jasper file.">
<taskdef name="jrc"
classname="net.sf.jasperreports.ant.JRAntCompileTask">
<classpath refid="classpath" />
</taskdef>
<jrc destdir=".">
<src>
<fileset dir=".">
<include name="*.jrxml" />
</fileset>
</src>
<classpath refid="classpath" />
</jrc>
</target>
</project>
接下来,让我们打开命令行窗口并转到build.xml文件放置的目录。最后执行的命令 ant -Dmain-class=yiibai.JasperReportFill (viewFullReport是默认的目标),如下所示:
C:\tools\jasperreports-5.0.1\test>ant -Dmain-class=com.yiibai.JasperReportFill
Buildfile: C:\tools\jasperreports-5.0.1\test\build.xml
clean-sample:
[delete] Deleting directory C:\tools\jasperreports-5.0.1\test\classes
[delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jasper
[delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrprint
同为比较常用的报表工具,FineReport在报表制作和实现各种效果过程中所需代码量远小于jasperreport,而且FineReport中大部分的报表代码细节被隐藏,呈现出的是是可视化的设计过程,具体到报表参数部分,如下:
参数控件绑定数据
1. 描述
FineReport为了让用户快速的实现参数查询数据功能,提供了专门的参数界面,用来放置与查询相关的控件,如下图:
![jasperreports教程:[3]报表参数](https://exp-picture.cdn.bcebos.com/256eb672941fbee4e68badeac1237971ff1de7e5.jpg)
2. 示例
根据下图我们制作一个简单的查询界面,从而了解参数查询界面的具体制作方法。
![jasperreports教程:[3]报表参数](https://exp-picture.cdn.bcebos.com/359bee5e4a237971284ccb6c93196120a6cde3e5.jpg)
.1 打开报表
打开报表:%FR_HOME%\WebReport\WEB-INF\reportlets\doc\Primary\Parameter\Parameter.cpt,这张模板是模板参数章节的示例模板,该模板中添加了参数界面,以此模板为例来讲述参数界面的一些使用方法。
2.2 参数布局
按照下图所示,将控件拖至相应的位置,如下:
![jasperreports教程:[3]报表参数](https://exp-picture.cdn.bcebos.com/7830e01d96d81819b871fa79876efbf203b3dee5.jpg)
另:参数界面采用绝对布局方式,因此可以将控件拖至面板中的任何位置。
2.3 参数控件编辑风格
默认的参数控件都是文本框,有时如希望使用日期控件来选择日期,或者下拉框直接选择数据,这就需要为参数控件定义编辑风格了。
如将地区控件设为下拉框。选中地区控件,选择控件中的扳手,在下面的对话框中选择控件类型为下拉框:
![jasperreports教程:[3]报表参数](https://exp-picture.cdn.bcebos.com/a68c126efbf202b3ab86c4cf30f4da5873dadbe5.jpg)
注:如果已经选择控件类型之后,又需要重新修改,那么需要删除原来的控件,再在控件列表中拖拽您需要的控件类型至参数面板中,然后修改控件名与参数名称一致即可。
然后在属性表的基本属性>数据字典中,按照下图设置下拉框的数据:
![jasperreports教程:[3]报表参数](https://exp-picture.cdn.bcebos.com/db196cdade49610f6e07f0b0a56817e950e1d2e5.jpg)
注:给控件设置数据字典,即为控件绑定待选值,一般适用于下拉框、下拉树这类可以直接选择值的控件。
另:如果控件与数据集参数绑定,数据集参数的默认值是无法传递到参数面板控件中的,控件默认值需要另外设置,详细请参照控件默认值,但是模板参数的默认值是可以传递到控件的默认值中的,无需再次设置。
2.4 控件名称
参数与控件是通过控件名称进行绑定的,即控件名与参数名保持一致,如果参数控件是通过点击右下角的以下参数未生成按钮生成的,那么控件名会自动与参数就行绑定,如果是自己拖曳的,就需要在控件名属性处修改控件名,使之与参数名保持一致。
2.5 保存报表并预览
保存并分页预览便可以看到效果了