组在JasperReports的协助组织对报告的数据以逻辑方式。报告组代表连续记录的数据源中有一些共同点,比如某个报表字段的值的序列。报告组由<group>元素定义。一个报表可以有任意数量的组。一旦声明,群体可以在整个报告中提到的。

报告组有三个要素:

  • Group expression: 这表示必须改变,以启动一个新的数据组中的数据。
  • Group header section: 帮助位置标签在分组数据的开始。
  • Group footer section: : 帮助位置标签在分组数据的末尾。

在截至于若该组表达变化,一组发生断裂和相应的<groupFooter>和<groupHeader>部分的值插入到生成的文档中报告充填时数据源的迭代。

 报表组的机制不执行由数据源所提供的资料的任何排序。数据分组按预期工作,只有当数据源中的记录按照报告中使用的组表达式已经下令。

属性组

<group>元素包含属性,使我们能够控制分组的数据是如何布局。属性概括于下表:

属性

描述

name

这是强制性的。它通过名称引用该组中的报表表达式。它遵循相同的命名约定我们,我们提到的报告参数,字段和报表变量。它可以在其他JRXML属性被用于当想引用一个特定的报告组。

isStartNewColumn

当设置为true时,每个数据组将开始一个新的列。默认值是false

isStartNewPage

当设置为true时,每个数据组将开始一个新的页面上。默认值是false

isResetPageNumber

当设置为true,该报告页码将每一个新组开始时被重置。默认值是false

isReprintHeaderOnEachPage

当设置为true时,组头会被重印每一页上。默认值是false

minHeightToStartNewPage

定义在列的底部,以便将组头当前列所需要的垂直空间最小量。被指定在报告单位的数量。

footerPosition

呈现在页面上的组页脚的位置,以及其有关的报告的部分它后面的行为。它的值可以是: NormalStackAtBottomForceAtBottomCollateAtBottom.默认值是 Normal

keepTogether

当设置为true,将阻止该集团从分割它第一次突破的尝试

例子

让我们添加一个组(CountryGroup)现有的报告模板(章报表设计)。每个国家的次数进行计数,计数显示为组页脚。在组头中每个记录的计数前缀。修订后的报告模板(jasper_report_template.jrxml)如下。将其保存到 C:\tools\jasperreports-5.0.1\test 目录:

<?xml version="1.0"?> <!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd"> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="jasper_report_template" pageWidth="595" pageHeight="842" columnWidth="515" leftMargin="40" rightMargin="40" topMargin="50" bottomMargin="50"> <parameter name="ReportTitle" class="java.lang.String"/> <parameter name="Author" class="java.lang.String"/> <queryString> <![CDATA[]]> </queryString> <field name="country" class="java.lang.String"> <fieldDescription><![CDATA[country]]></fieldDescription> </field> <field name="name" class="java.lang.String"> <fieldDescription><![CDATA[name]]></fieldDescription> </field> <sortField name="country" order="Descending"/> <sortField name="name"/> <variable name="CountryNumber" class="java.lang.Integer" incrementType="Group" incrementGroup="CountryGroup" calculation="Count"> <variableExpression><![CDATA[Boolean.TRUE]]></variableExpression> </variable> <group name="CountryGroup" minHeightToStartNewPage="60"> <groupExpression><![CDATA[$F{country}]]></groupExpression> <groupHeader> <band height="20"> <textField evaluationTime="Group" evaluationGroup="CountryGroup" bookmarkLevel="1"> <reportElement mode="Opaque" x="0" y="5" width="515" height="15" backcolor="#C0C0C0"/> <box leftPadding="10"> <bottomPen lineWidth="1.0"/> </box>