组在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 | 呈现在页面上的组页脚的位置,以及其有关的报告的部分它后面的行为。它的值可以是: Normal, StackAtBottom, ForceAtBottom, CollateAtBottom.默认值是 Normal |
keepTogether | 当设置为true,将阻止该集团从分割它第一次突破的尝试 |
例子
让我们添加一个组(CountryGroup)现有的报告模板(章报表设计)。每个国家的次数进行计数,计数显示为组页脚。在组头中每个记录的计数前缀。修订后的报告模板(jasper_report_template.jrxml)如下。将其保存到 C: oolsjasperreports-5.0.1 est 目录:
<?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>
<textElement/>