我正在使用 JasperReports 4.7.1 创建一个每页2列的报告。
当属于某个组的记录跨越多个列时,我不仅要在组的开头打印标题,还要在每个列的开头打印标题。
在组属性中使用 重新打印标题 ( isReprintHeaderOnEachPage 属性),标题可以在开头打印每页。但是我仍然无法在新专栏的开头找到相同的方法。
我怎样才能做到这一点?
当前报告页面的屏幕截图...
我想要实现的目标(请注意第二栏中的标题)......
答案 0 :(得分:1)
我遇到了类似的问题,我设法通过添加ColumnHeader乐队来解决它,只显示我的2列报告的第2列。
将isReprintHeaderOnEachPage设置为true并将groupHeader和columnHeader的高度设置为相同以使我的解决方案正常工作非常重要。
以下是相关代码(当然,您将“telephoneNumber”替换为适当的组表达式:
<group name="telephoneNumberGroup" isStartNewPage="true" isReprintHeaderOnEachPage="true">
<groupExpression><![CDATA[$F{telephoneNumber}]]></groupExpression>
<groupHeader>
<band height="17">
<textField>
<reportElement positionType="Float" x="5" y="0" width="170" height="15" uuid="5e8b892b-f907-4907-9c6d-4419e57325e5"/>
<textElement verticalAlignment="Middle">
<font fontName="Arial" size="6" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{telephoneNumber}]]></textFieldExpression>
</textField>
</band>
</groupHeader>
</group>
<columnHeader>
<band height="17">
<printWhenExpression><![CDATA[$V{COLUMN_NUMBER} == 2]]></printWhenExpression>
<textField>
<reportElement positionType="Float" x="5" y="0" width="170" height="15" uuid="5e8b892b-f907-4907-9c6d-4419e57325e5"/>
<textElement verticalAlignment="Middle">
<font fontName="Arial" size="6" isBold="true"/>
</textElement>
<textFieldExpression><![CDATA[$F{telephoneNumber}]]></textFieldExpression>
</textField>
</band>
</columnHeader>