【问题标题】:How to display the page x of y for only the reports which are having more than one page如何仅显示超过一页的报告的第 x 页
【发布时间】:2012-06-29 13:26:25
【问题描述】:

我正在使用 jasper 报告-4.5.0。我正在使用这个 jasper 生成不同格式的报告。我想在我的报告中显示 Y 页的 X 页。所以我正在使用 iReport 提供的页码文本字段,该字段在调色板中可用。它在所有报告中显示页码,即使是具有单页的报告也是如此。

所以我的要求是,如果我的报告只有一页,我不想要第 x 页的 y 页。我该如何做到这一点?

目前我正在根据给定的答案使用以下代码。

<textField>
                    <reportElement x="395" y="121" width="20" height="20">
                       <printWhenExpression><![CDATA[$V{PAGE_COUNT} > 1]]></printWhenExpression>
                    </reportElement>
                    <textElement textAlignment="Right"/>
                    <textFieldExpression><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
                </textField>
                <textField evaluationTime="Report">
                    <reportElement x="350" y="121" width="45" height="20">
                    <printWhenExpression><![CDATA[$V{PAGE_COUNT} > 1]]></printWhenExpression>
                    </reportElement>
                    <textElement/>
                    <textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
                </textField>

如果我这样使用,我将无法获得超过一页的报告中的页码。

【问题讨论】:

标签: jasper-reports


【解决方案1】:

您需要为包含"Page "+$V{PAGE_NUMBER}+" of"" " + $V{PAGE_NUMBER} 的两个字段设置Print When Expression。包含这两个字段的 jrxml 部分应如下所示:

<textField>
    <reportElement uuid="90a3462d-cfa2-4768-904a-1edf4191f1b7" x="250" y="16" width="80" height="20">
        <printWhenExpression><![CDATA[$V{PAGE_COUNT} > 1]]></printWhenExpression>
    </reportElement>
    <textElement textAlignment="Right"/>
    <textFieldExpression><![CDATA["Page "+$V{PAGE_NUMBER}+" of"]]></textFieldExpression>
</textField>
<textField evaluationTime="Report">
    <reportElement uuid="01d43267-3247-48bb-9822-8b58ea860d7f" x="330" y="16" width="40" height="20">
        <printWhenExpression><![CDATA[$V{PAGE_COUNT} > 1]]></printWhenExpression>
    </reportElement>
    <textElement/>
    <textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression>
</textField>

【讨论】:

  • 嗨 jschoen,感谢您的回复。如果我使用您提到的代码,我不会在超过一页的报告中获得页码。为了便于理解,我发布了代码也是我在原始问题中使用的代码。任何帮助将不胜感激。
  • @user1434746 您还可以编辑问题以包含 jrxml 中的变量定义吗?我猜这就是问题所在。
  • 您好,我没有为此页码定义任何变量。是否需要定义任何变量。
  • 我认为 PrintWhen 必然会评估“Now”,尽管 textField 评估为“Auto”或“Report”。因此,根据逻辑,他将始终获得该领域或永远不会;但只有当总页数大于一时才会显示该字段。 (我没有测试确认。)
  • PAGE_COUNT 变量是当前页的记录数,而不是总页数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-17
  • 1970-01-01
  • 1970-01-01
  • 2015-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多