jasperreports子报告没有分裂

时间:2011-06-07 22:29:57

标签: jasper-reports subreport page-break

我有一个包含多个子报告的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",它们使用相同的字体和相同类型的报表元素。

如果有人有任何想法为什么一个人会正确分裂而另一个没有,那么你的帮助将会非常感激。

1 个答案:

答案 0 :(得分:4)

我们遇到了相同或至少非常相似的问题。原因不在报告中,而是在子报告的定义中。它被配置为具有多个列,当它到达报告的最后一行时,它再次在第二列的顶部开始。

将其设置为单列固定。以下是我们案例中的简化增量

-<jasperReport ... columnCount="3" pageWidth="240" pageHeight="555" ...>
+<jasperReport ...  pageWidth="240" pageHeight="555" ...>

现在,如果子报表不适合当前页面,则乐队将在下一页开始。