ireport教程之参数(Parameters)
1、Parameters通常是用来在打印的时候从程序里传值到报表里。也就是说parameters通常的是起参数传递的作用。他们可以被用在一些特定的场合(比如应用中SQL 查询的条件),如report中任何一个需要从外部传入的变量等(如一个Image对象所包括的char或报表title的字符串)。和使用Fields一样,parameters也需要在创建的时候定义它的数据类型。parameters的数据类型是标准的java的Object。

5、fillReport是一个关键的方法,它允许你通过一个文件名,一个参数集来传递到我们要调用的报表当中。例-如通过下面的处理方法我们可以让一个处部的传入值作为我们报表的title。下面的是一个例子:a).声明一个parameter.这个parameter是java.lang.String 类型,名字为:name_report:


8、一般情况下,我们不需要为报表中的每一个parameters传递一个值,除非某一个parameter一定要从外部程序传入时我们才需为一个parameter设置一个值。如果一个parameter外部门程序没有为其赋值那么ireport将使用Default Value Expression来对一个parameter进行初始化,如果连Default Value Expression没有设置那么它的值就是null。事实上,对于一个parameters我们不仅仅可以传递一个String,Integer,Boolean等java中小的对象,同时我们还可以利用parameters来传递一些足够大足够复杂的对象,比如一个图像(java.awt.Image),或者通过一个parameters来为一个为子报表提供的datasource 连接等。在用Map类型传递参数时我们要注意传递的参数要与report里的parameters类型保持一致,否则会抛出ClassCastException。
9、ireport内嵌的Parameters:ireport提供了一些内建的parameters,这些parameters对于用户来说是只读的。内嵌的parameters列表如下:


11、如何实现参数查询几乎所有的统计报表都会有类似上图的统计条件,传统的做法是使用如ext、html等编程实现,工作量大且维护成本高。Finereport报表只需要通过参数的定义,添加参数控件绑定数据、参数过滤和参数面板样式三个步骤便可以轻松实现参数查询,零代码,维护简单。
12、实现步骤FR报表提供了参数界面的概念,让用户快速制作出参数表单界面,制作参数查询界面的步骤如下:参数定义:设置参数名称,添加参数,根据实际情况的不同添加不同种类的参数,详细请查看参数的种类与区别。添加控件绑定数据:FineReport参数查询,是在参数面板中添加控件,使控件名字与参数名称一样,通过该控件将其控件值传递给参数,实现动态修改参数值得效果,可为控件绑定数据,直接选择;参数面板样式设定:设置参数界面中控件的位置,参数面板的位置,背景等等。
13、参数应用实例之URL给参数传递中文值虽然我们建议模板名称、参数变量名称都用英文,但是对于中国式的复杂报表,参数肯定有中文情况。使用ie浏览器通过url给参数赋值为中文时,会发现中文值会出现乱码,如下图所示

14、问题原因因为浏览器编码与服务器编码不一致,导致中文url输入会产生乱码,无法被正常识别。
15、解决方案通过url给参数赋值一般应用在报釉涑杵抑表已经集成到项目中,希望点击某个链接将某个值传递给报表;而在浏览器中直接给参数赋值呢,一般是做测试使用的,此时可以将浏览器换成火狐或者谷歌。集成到项目中,可以使用FR.cjkEncode()方法,如点击某个链接给col赋值为地区,此时可以使用如下方法:1. window.location="http://localhost:8080/WebReport/ReportServer?reportlet=doc/Parameter/DynamicCol/DynamicCol.cpt&col="+FR.cjkEncode("中文名称")