我正在使用iReport 3.7.6。 (不可能使用更新的版本)。
我有一份主要报告和一份子报告。子报告重复多次,我需要将交替的背景设置为子报告,但是我需要将子报告显示在彼此之下,以便在新页面启动时分割它们,只有在它们适合时才会在页面上显示它们。
我尝试了很多东西,但似乎无法让它发挥作用。
我尝试使用框架并设置备用行样式并将所有元素放在该框架中:
<style name="AlternateRowStyle" mode="Opaque">
<conditionalStyle>
<conditionExpression><![CDATA[$V{REPORT_COUNT} % 2 == 0]]></conditionExpression>
<style backcolor="#E5E7E9"/>
</conditionalStyle>
</style>
但我得到的结果如下:Splitting a band's background frame
然后我尝试使用背景乐队(为简单起见,我只添加了一种颜色的帧,所以没有替换)但我也遇到了这种方法的困难。
我的子报告只有细节和背景带,我设置了相同的高度和立即分割类型。
主报告只有细节带(我简化了)。
子报告摘要:
<background>
<band height="250" splitType="Immediate">
<frame>
<reportElement mode="Opaque" x="0" y="0" width="600" height="250" backcolor="#E5E7E9"/>
</frame>
</band>
</background>
<detail>
<band height="250" splitType="Immediate">
//content not important
</band>
</detail>
主要报告摘要:
<detail>
<band height="660" splitType="Immediate">
<subreport>
<reportElement positionType="Float" x="0" y="0" width="600" height="250"/>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{objects})]]></dataSourceExpression>
<subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "subreport1.jasper"]]></subreportExpression>
</subreport>
</band>
</detail>
但是这种方法导致了奇怪的行为:子报表的背景只在主报表的每个页面上显示一次且仅在页面的开头显示,无论主报表的一页上实际有多少子报表,如背景设置到主要报告(如图所示)。我希望每份报告都有背景资料。
我很感激任何帮助。