【发布时间】:2015-12-09 15:55:05
【问题描述】:
我需要启用具有 3 种页眉类型的报告:“首页页眉”、“中间页页眉”和“最后一页页眉”。所有这些标题都可以有不同数量的报表元素和不同的位置。页脚也是如此。
注意:报告必须在其Detail 带中支持报告元素,如 jr:table 或 jr:list。这些元素必须通过 xml 数据源与数据一起提供。
我能够使用Title 带模拟首页页眉,但我在启用“中间页页眉”和“最后一页页眉”时遇到问题。这就是我想要做的:
<pageHeader>
<band height="100" splitType="Stretch">
<frame>
<reportElement x="0" y="0" height="100" width="555" uuid="f788c74b-6853-4bc7-8ed7-5e3d538287c9" isRemoveLineWhenBlank="true">
<printWhenExpression>
<![CDATA[new Boolean($V{PAGE_NUMBER} == $V{PAGE_COUNT})]]>
</printWhenExpression>
</reportElement>
<staticText>
<reportElement x="1" y="1" width="100" height="20" uuid="9777208b-5323-4045-aa49-a849d5c00c89"/>
<text><![CDATA[LAST PAGE HEADER TEXT 1]]></text>
</staticText>
<staticText>
<reportElement x="50" y="10" width="200" height="50" uuid="15313676-09e6-4d17-ac75-2df99f61bfee"/>
<text><![CDATA[LAST PAGE HEADER TEXT 2]]></text>
</staticText>
</frame>
<frame>
<reportElement x="0" y="0" height="100" width="555" uuid="65577abd-8717-477a-f27e-c70e9eba46af" isRemoveLineWhenBlank="true">
<printWhenExpression>
<![CDATA[new Boolean($V{PAGE_NUMBER} != 1) && new Boolean($V{PAGE_NUMBER} != $V{PAGE_COUNT})]]>
</printWhenExpression>
</reportElement>
<staticText>
<reportElement x="70" y="0" width="300" height="100" uuid="0a866eb3-85cf-4376-d6a4-21b534d36df0"/>
<text><![CDATA[MIDDLE PAGE HEADER TEXT 1]]></text>
</staticText>
</frame>
</band>
</pageHeader>
我正在使用frame 块和printWhenExpression。根据printWhenExpression 条件,应该只打印两个frame 块中的一个(及其所有内容)。第一帧块应呈现“最后一页页眉”,第二个应呈现“中间页页眉”。
问题出在第一个frame(“最后一页页眉”)printWhenExpression:
<printWhenExpression>
<![CDATA[new Boolean($V{PAGE_NUMBER} == $V{PAGE_COUNT})]]>
</printWhenExpression>
在这种情况下,$V{PAGE_NUMBER} 始终等于 $V{PAGE_COUNT},因为需要评估时间。
有没有办法检查当前页面是否是最后一页?另外,有没有其他方法可以启用“中间页”和“最后一页”页眉?
注意:我能够使用frames 和Last Page Footer 带为页脚实现类似的逻辑!
【问题讨论】:
-
嗨@PetterFriberg。我正在尝试实施您的解决方案,但
currentPage变量在除第一个页面之外的所有页面上返回null。 -
我正在使用“Jaspersoft iReport Designer 5.6.0”和“JDK 1.7.0_79”。
-
如果您复制 jrxml 中的变量表达式和 pageHeader 中的 textField (设置位置,如果它带外),您应该在不同的页面组上看到不同的文本......我试过了它在 iReport Designer 5.6.0 中并使用 jasper 报告 6 导出为 pdf。
-
我已经完成了你建议的一切,但仍然没有运气。这是我与the xml datasource 一起使用的the jasper template。
标签: jasper-reports