iReport专题学习之组(Group)06

组(Groups)

groups允许我们对报表里的数据进行全新的切割分组组合,分组是通过一个表达式来定义的,ireport会通过这个表达式进行计算分组情况,每一个新的组都是从我们在expression value里输入的表达式发生变化的时候开始的,接下来我们通过一个例子的演示一步一步的说明如何使用groups.

假设有一个学生信息表,想要创建一个根据学生所在班级进行分组的报表。

第一步:首先我们打开一个新的报表文件,然后点击Connection/DataSources,选择JDBC Connection,我们创建一个JDBC的Connction,如下图所示:

第二步:点击【Report Inspector】面板中的report2右键选择【Edit Query】弹出Report Query弹出框,输入以下查询语句:

select * from stud order by class;如下图所示:

三步:将id和class两个field拖到report2的detail的band里面,同时调整detail band的高度,如下图所示:

四步:保存报表,并点击【Preview】来预览生成的报表,如下图所示:

到这里我们看到学生的详细数据已经可以在报表里显示了,接下来我们对学生信息按id字段进行分组显示。

第五步:点击【report2】右键,选择【Add Report Group】打开groups定义窗口,并添加新的名为class的group,如下图所示:

下一步直到完成即可,此时我们可以看到报表文件中多出了两个class Group Header1 和class Group Footer 1的band。

第六步:我们把detail band里的class的field移到report2里新产生的class group Header的band里,保存,并点击【Preview】对报表进行预览即可。如下图所示:

在jasperreport里group的数量是没有限制的,一个group可以游一个父group,同时也可以有若干个子group,通过group定义列表,我们可以通过"move up"和"move down"来设置group的顺序。


组属性:

在上面我们通过一个实例讲解了group怎么使用之后,我们必须了解一个group几个属性定义,在报表的右侧区域显示我们添加组的属性,如下图所示:

从上图可以看出,一个group具有如下这些属性需要我们去定义:

1、group name:为这个group指定一个名称,group创建完成后会产生两个新的band:header和footer band.这两个band的名称采用group的名称来定义。

2、Start on a new column:如果此项勾选,那么分组只会在报表中的新的column产生,也就是说在一页中报表分组在一个column里只会做一次。

3、Start on a new page:与上面的选项类似,如果该选项构陷,那么分组只会在每一页做一次,也就是说每一页最多只会有一个分组数据。

4、Reset page number:该选项允许在一个新组开始的时候重设页号

5、Print header on each page:如果该选项勾选,那么如果当前页没能显示完组里的所有数据时,到一页里显示该数据时会把该组的header打印出来,否则将不会打印。

6、Min height to start new page:该选项用来设置当前报表中页面所余下的高度的最小值分组的最小值,默认值为0,如果我们设置为100,表示如果当前页面余下的高度小于100就不再继续显示分组的数据,而是在下一页显示分组的数据。

7、group expression:分组时采用的表达式规则,如上图我们在定义class这个group时我们在group expression里输入了$F{id},表示将改组的学生的id字段进行分组显示。

8、group header band height:新产生的header band的高度

9、group footer band height:新产生的footer band的告诉


groups和records的排序

我们可以在设置查询的地方选择设置选项来使ireport自动对依据字段进行排序,我们也可以在创建一个group时要对分组的字段做好正确的排序工作,比如在sql中我们可以添加"order by "来对分组的字段进行排序。

猜你喜欢

转载自blog.csdn.net/liu865033503/article/details/72821035