该报告包含多个列:如何在每列中重新打印组头?

时间:2012-10-01 13:52:28

标签: jasper-reports

我正在使用 JasperReports 4.7.1 创建一个每页2列的报告。

当属于某个组的记录跨越多个列时,我不仅要在组的开头打印标题,还要在每个列的开头打印标题。

在组属性中使用 重新打印标题 isReprintHeaderOnEachPage 属性),标题可以在开头打印每页。但是我仍然无法在新专栏的开头找到相同的方法。

我怎样才能做到这一点?

当前报告页面的屏幕截图...

enter image description here

我想要实现的目标(请注意第二栏中的标题)......

enter image description here

1 个答案:

答案 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>