我有一个包含多个子报告的jasper报告。他们中的大多数工作正常,但由于某种原因,我的一个子报表如果变得足够长到达页面的末尾就不会分裂,而是跳回到其详细信息部分的顶部并继续写入,覆盖之前的文本。我看不出这个子报告和工作正确的子报告之间有什么区别。目前我的项目使用jasper-reports 1.2.5,但我尝试升级到4.0.1(仅适用于这一个报告),结果是相同的。
这是jrxml的一部分,其中包含了不起作用的子报表:
<subreport isUsingCache="true">
<reportElement
x="0"
y="172"
width="468"
height="21"
key="subreport-3"
positionType="Float"/>
<dataSourceExpression><![CDATA[$P{dataSourcePreviousYukonLicence}]]></dataSourceExpression>
<subreportExpression class="java.io.InputStream"><![CDATA[this.getClass().getResourceAsStream("/config/template/subreportPreviousYukonLicence2.jasper")]]></subreportExpression>
这是 工作的部分:
<subreport isUsingCache="true">
<reportElement
x="0"
y="43"
width="468"
height="21"
key="subreport-2"
positionType="Float"/>
<dataSourceExpression><![CDATA[$P{dataSourceConvictionHistory}]]></dataSourceExpression>
<subreportExpression class="java.io.InputStream"><![CDATA[this.getClass().getResourceAsStream("/config/template/subreportConvictionHistory.jasper")]]></subreportExpression>
子报表本身的设计非常相似,所有的波段都是isSplitAllowed="true"
,它们使用相同的字体和相同类型的报表元素。
如果有人有任何想法为什么一个人会正确分裂而另一个没有,那么你的帮助将会非常感激。
答案 0 :(得分:4)
我们遇到了相同或至少非常相似的问题。原因不在报告中,而是在子报告的定义中。它被配置为具有多个列,当它到达报告的最后一行时,它再次在第二列的顶部开始。
将其设置为单列固定。以下是我们案例中的简化增量
-<jasperReport ... columnCount="3" pageWidth="240" pageHeight="555" ...>
+<jasperReport ... pageWidth="240" pageHeight="555" ...>
现在,如果子报表不适合当前页面,则乐队将在下一页开始。