1

好吧,我无法通过谷歌找到我的问题的答案,所以......

目前我正在使用 JasperReports 和 DynamicJasper 来构建我的报告并打印它们。当我只使用单个 jasper 文件或 jrxml 文件时,一切正常。如果我需要合并报告,我还有一段代码可以将所有 JasperPrint 文件合并为一个。然而,这并不是最理想的......

我可以使用一个 .jasper 或 .jrxml 文件作为主报告(它有一个页眉、一个页脚和一个空的详细信息带)并用 1-n 个子报告填充它的详细信息带(目前在 .jasper 或 .jxrml 中) ?

目前只有我想要的子报表之一使用数据源(tablemodel),而其他想要的子报表从参数中获取数据。

我已经找到了几种不同的方法来做某事,这些方法最终可以达到我想要的结果,但到目前为止还没有成功……哪些建设者/经理/我需要什么?有点沮丧,因为找不到有关不同类、方法及其参数的足够信息。他们为什么在那里以及需要什么。例子解释不够...

我是否应该使用 DynamicReportBuilder 为 DynamicJasperHelper 构建 DynamicReport 生成 JasperReport 又用 JasperFillManager.fillReport 方法填充?

4

1 回答 1

2

将所有子报告放在一个主报告中并print when expression用于可见性。说下面是子报表代码。

<subreport>
   <reportElement uuid="9f36c3cb-7e29-4040-a14e-6a91775e89e4" x="0" y="35" width="555" height="47">
      <printWhenExpression><![CDATA[$P{disp} == 1]]></printWhenExpression>
   </reportElement>
<!-- Other Element -->
</subreport>

请注意上面代码中的以下行。

<printWhenExpression><![CDATA[$P{disp} == 1]]></printWhenExpression>

这意味着应在 when 中包含整个子报告$P{disp}.intValue() == 1。这里$P{disp},是您必须传递给报告才能使用的参数printWhenExpression

参数或者不是必须的,你也可以使用a field。条件根据您的要求而定。

Note :您可以对所有子报表采用类似的方法。

于 2014-10-30T07:00:26.130 回答