25

Page X of Y根据通用解决方案,我想创建一个包含 的文本字段,而不是将其分成两部分。我的文本字段包含"Page " + $V{currentPage} + " of " + $V{PAGE_NUMBER}"with evaluationTime=auto

假设我有一份 10 页的报告。三个是标题带,六个是细节带,一个是总结带。我的结果显示"Page 0 of 10"Title Band,正确计数为Detail Band,然后"Page 0 of 10"Summary Band

您如何确保变量在任何地方都被计算,而不仅仅是在Detail Band上?

4

8 回答 8

33

Jaspersoft 工作室,6 岁以上

对于 Jaspersoft Studio v6,或者如果第一个页码重复,请尝试此解决方案,它使用$V{MASTER_CURRENT_PAGE}$V{MASTER_TOTAL_PAGE}评估时间为Master.

Jaspersoft 工作室

对于其他版本的 Jaspersoft Studio,请尝试后续小节中概述的步骤。

创建变量

如下创建一个变量:

  1. 创建一个名为V_CURRENT_PAGE_NUMBER
  2. 选择变量以打开其属性(如下图所示)
  3. 表达式设置为:1
  4. 初始值表达式设置为:$V{PAGE_NUMBER}
  • 如果显示页码0,请使用$V{PAGE_NUMBER} + 1.
  • 如果页码总是显示1 of Y,请将Expression设置为$V{PAGE_NUMBER}而不是初始值表达式,并将初始值表达式留空。
  1. 重置类型设置为:Page

这些设置如下图所示:

当前页码变量

Expression设置为以1防止其值为null。也就是说,如果页脚显示Page null of 4这可能意味着尚未设置表达式。

变量已创建。

添加页脚

添加页脚带,如下所示:

  1. 在大纲面板中选择报告
  2. 检查带有页眉和页脚的摘要以确保页脚出现在摘要页面上。
  3. 添加页脚带。

已添加页脚。

创建文本字段

创建一个文本字段,如下所示:

  1. 将单个文本字段拖放到页脚区域。
  2. 选择文本字段。
  3. 表达式设置为:msg("Page {0} of {1}", $V{V_CURRENT_PAGE_NUMBER}, $V{PAGE_NUMBER})
  4. 评估时间设置为:Auto

这些设置如下图所示:

单个文本字段

单个文本字段已创建。

预览报告

对于包含三个页面和一个摘要页面的报告,预览报告会显示:

第 1 页

摘要页面显示:

第 4 页

于 2016-05-31T17:38:00.753 回答
20

我尝试了这种方法,但结果页码不正确:{1 / 7、1/7、2/7、3/7、4/7、5/7、6/7}。

对于 JasperReports 6+,使用MASTER_CURRENT_PAGEMASTER_TOTAL_PAGES系统变量并记住将文本字段评估时间设置为Master

<textField evaluationTime="Master">
    <textElement textAlignment="Right"/>
    <textFieldExpression><![CDATA[msg("Page {0} of {1}", $V{MASTER_CURRENT_PAGE}, $V{MASTER_TOTAL_PAGES})]]></textFieldExpression>
</textField>

见:http: //jasperreports.sourceforge.net/sample.reference/book/index.html

于 2017-03-02T08:17:13.840 回答
11

正如您所提到的,常用方法使用两个单独的文本字段:

当前页码

$V{PAGE_NUMBER}评估时间:现在

总页码

$V{PAGE_NUMBER}与评估时间:报告

于 2016-01-10T10:30:26.203 回答
4

对于页面历史显示如下: Page: 1 of 5

使文本字段值如下所示,并将评估时间更改为Master

"Page: "+$V{MASTER_CURRENT_PAGE}+" of "+$V{MASTER_TOTAL_PAGES}

来源:

            <textField evaluationTime="Master">
                <reportElement x="224" y="0" width="186" height="15" uuid="6641bb8b-9f48-4832-942b-8b04220030e6">
                    <property name="com.jaspersoft.studio.unit.height" value="px"/>
                </reportElement>
                <textElement verticalAlignment="Top">
                    <font size="8"/>
                </textElement>
                <textFieldExpression><![CDATA["Page: "+$V{MASTER_CURRENT_PAGE}+" of "+$V{MASTER_TOTAL_PAGES}]]></textFieldExpression>
            </textField>
于 2019-10-28T05:13:57.320 回答
3

关于当前页码,evaluationTime=now$V{PAGE_NUMBER}您的答案。

不幸的是,我认为你不能实现你想要的,因为当 Detail 波段的 Split Allowed 启用时, PAGE_COUNT中存在一个错误。否则evaluationTime=now"Page " + $V{PAGE_NUMBER} + " of " + $V{PAGE_COUNT}"可能会工作。

于 2014-01-16T23:38:38.013 回答
2

这项工作对我来说(与戴夫的回答略有不同)

*使用 JasperSoft Studio

捕获:添加变量

然后放置一个带有表达式的文本字段:

"Pág. " + $V{PAGE_NUMBER} +"/" + $V{V_CURRENT_PAGE_NUMBER}

希望这有帮助!

于 2019-07-02T00:39:25.340 回答
0

这应该会有所帮助,通过使用 评估时间作为报告

   <textField>
        <reportElement x="497" y="0" width="32" height="12" forecolor="#7E8083"
                           uuid="ef663cfd-4058-40bb-a6d9-de7f9a8164be"/> --update your elements here
        <textElement textAlignment="Right" verticalAlignment="Middle">
            <font fontName="SansSerif" size="7" pdfFontName="OpenSans-Regular.ttf"/>
        </textElement>
        <textFieldExpression>
            <![CDATA["Page " + $V{PAGE_NUMBER} + " of"]]>
        </textFieldExpression>
   </textField>
   <textField evaluationTime="Report">
        <reportElement x="529" y="0" width="7" height="12" forecolor="#7E8083"
                           uuid="ef663cfd-4058-40bb-a6d9-de7f9a8164be"/>  --update your elements here
        <textElement textAlignment="Right" verticalAlignment="Middle">
            <font fontName="SansSerif" size="7" pdfFontName="OpenSans-Regular.ttf"/>
            </textElement>
            <textFieldExpression>
                <![CDATA[$V{PAGE_NUMBER}]]>
            </textFieldExpression>
   </textField>
于 2018-07-16T13:45:47.560 回答
0

如果您想Page 1 of 5在报告页脚的右侧看到不喜欢的页面,请使用 ireport 或 jasper 报告调色板工具(Y 页 X)是完美的。

如果您想Page 1 of 5在报告页脚的左侧看到没有喜欢的页面,请使用 ireport。

请按照以下步骤

  1. 像这样创建函数变量

在此处输入图像描述

  1. 请拿一个TextField

    “第“+$V{V_CURRENT_PAGE_NUMBER}+”页,共“+$V{PAGE_NUMBER} 页

在此处输入图像描述

于 2019-11-27T10:14:13.490 回答