好吧,我无法通过谷歌找到我的问题的答案......
目前我正在使用JasperReports和DynamicJasper构建我的报告并打印它们。当我只使用单个jasper文件或jrxml文件时,一切正常。如果我需要组合报告,我还有一段代码将所有JasperPrint文件合并为一个。但是,这并不是最佳的......
我可以使用一个.jasper或.jrxml文件作为主报告(它有一个页眉,一个页脚和一个空的细节带)并用1-n子报告填充其细节带(目前在.jasper或.jxrml)?
目前只有一个我想要的子报告使用数据源(tablemodel),其他想要的子报告从参数中获取数据。
我找到了几种不同的方法来做一些可能导致我想要的结果,但到目前为止还没有成功......哪些建设者/经理/我需要什么?有点沮丧,因为无法找到有关不同类,方法及其参数的足够信息。为什么他们在那里,需要什么。示例不足以解释......
我是否应该使用DynamicReportBuilder为DynamicJasperHelper构建DynamicReport,后者生成JasperReport,而JasperReport又使用JasperFillManager.fillReport方法填充?
答案 0 :(得分: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>
这意味着$P{disp}.intValue() == 1
时应包含整个子报告。
此处$P{disp}
是您必须传递给报告才能使用printWhenExpression
的参数。
参数或不必要,您也可以使用field
。条件基于您的要求。
Note :
您可以对所有子报告使用simillar方法。