JasperReports 子报表subreport
子报表是 JasperReports 的一项不错的功能。此功能允许将一个报表合并到另一个报表中,即一个报表可以是另一个报表的子报表。子报表帮助我们保持报表设计简单,因为我们可以创建许多简单的报表并将它们封装到主报表中。子报告的编译和填充就像普通报告一样。当合并到另一个报告模板中时,任何报告模板都可以用作子报告,(报告模板的)内部没有任何更改。
子报表就像普通的报表模板。它们实际上是net.sf.jasperreports.engine.JasperReport对象,它们是在编译net.sf.jasperreports.engine.design.JasperDesign 对象后获得的。
JasperReports <subreport>元素
<subreport> 元素在将子报告引入主报告时使用。下面是 <subreport> JRXML 元素中的子元素列表。
-
<reportElement>
-
<parametersMapExpression> : 用于将包含报告参数的地图传递给子报告。映射通常从主报表中的参数获取,或者通过使用内置的 REPORTS_PARAMETERS_MAP 参数将父报表的参数传递给子报表。此表达式应始终返回一个java.util.Map对象,其中的键是参数名称。
-
<subreportParameter> : 此元素用于将参数传递给子报表。它有一个属性name,这是强制性的。
-
<connectionExpression > : 用于将java.sql.Connection传递给子报表。仅当子报表模板在报表填写阶段需要数据库连接时使用。
-
<dataSourceExpression> : 用于将数据源传递给子报表。此数据源通常从主报表中的参数获取,或通过使用内置 REPORT_DATA_SOURCE 参数将父报表的数据源传递给子报表。
-
元素(connectionExpression 和 dataSourceExpression)不能同时出现在 <subreport> 元素声明中。这是因为我们不能同时提供数据源和到子报表的连接。我们必须决定其中之一并坚持下去。
-
<returnValue> : 用于将子报表变量之一的值分配给主报表变量之一。此子元素具有以下属性 -
-
subreportVariable : 此属性指定要返回其值的子报表变量的名称。
-
toVariable : 此属性指定父报告变量的名称,其值将与子报告中的值一起复制/递增。
-
calculation :此属性可以取值:Nothing、Count、DistinctCount、Sum、Average、Lowest、Highest、StandardDeviation、Variance。属性计算的默认值为“Nothing”。
-
incrementerFactoryClass : 此属性指定用于创建增量器实例的工厂类。
-
-
<subreportExpression> : 这表明在哪里可以找到子报告的编译报告模板。这个元素有一个类属性。在类属性可以采取的任何值:java.lang.String中,java.io.File中,java.net.URL中,java.io.InputStream中,net.sf.jasperreports.engine.JasperReport。默认值为java.lang.String。
-
isUsingCache : 这是 <subreport> 元素的一个属性。这是一个布尔值,当设置为true 时,报告引擎将尝试使用它们指定的源识别先前加载的子报告模板对象。此缓存功能仅适用于具有返回 java.lang.String 对象作为子报表模板源的表达式的子报表元素,表示文件名、URL 或类路径资源。