显示“Y的页面X”用单个文本字段显示“Y的页面X”用单个文本字段(Show “Page X of Y

2019-05-14 08:48发布

我想创建一个包含一个文本字段Page X of Y ,没有两个部分拆分它,因为按照通常的解决方案。 我的文本字段包含"Page " + $V{currentPage} + " of " + $V{PAGE_NUMBER}"evaluationTime=auto

比方说,我有一个10页的报告。 三是标题区域 ,六是详细信息区域 ,一个是总结乐队 。 我的结果显示"Page 0 of 10"标题区域 S, 具体交易 S,那么正确的计数"Page 0 of 10"总结波段秒。

如何确保该变量计算无处不在,不仅在细节

Answer 1:

的JasperSoft工作室,6+

对于工作室的JasperSoft V6,或者如果第一页号是重复的,试试这个解决方案 ,它使用$V{MASTER_CURRENT_PAGE}$V{MASTER_TOTAL_PAGE}与评价时期Master

JasperSoft这个工作室

对于工作室的JasperSoft的其他版本,尝试在随后的小节中列出的步骤。

创建变量

创建一个变量,如下所示:

  1. 创建一个名为变量V_CURRENT_PAGE_NUMBER
  2. 选择变量以打开其属性(下面示出)
  3. 表达式来: 1
  4. 设置初始值表达式到: $V{PAGE_NUMBER}
    • 如果页码显示0 ,用$V{PAGE_NUMBER} + 1
    • 如果页码始终显示1 of Y ,设置表达式$V{PAGE_NUMBER}而不是初始值表达式,并保留初始值表达空。
  5. 设置复位类型Page

这些设置在如下图所示:

表达设置为1防止了它的值null 。 也就是说,如果页脚显示4页为null,则可能意味着表达尚未确定。

该变量被创建。

添加页脚

添加页面页脚区域如下:

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

页脚添加。

创建文本字段

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

  1. 拖动和单一的文本字段拖放到页面页脚区域。
  2. 选择该文本字段。
  3. 设置表达于: msg("Page {0} of {1}", $V{V_CURRENT_PAGE_NUMBER}, $V{PAGE_NUMBER})
  4. 设置Evalutation时间Auto

这些设置在如下图所示:

在单个文本字段创建。

预览报告

对于三页再加上一个摘要页的报告,预览报告显示:

摘要页面显示:

见Robert ENSINGER的博客中对这个问题的更多细节。



Answer 2:

我试过这种方法 ,但结束了不正确的页码:{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



Answer 3:

常见的做法,正如你所说,使用两个分开的文本字段:

当前页码

$V{PAGE_NUMBER}与EvaluationTime:现在

总页数

$V{PAGE_NUMBER}与EvaluationTime:报告



Answer 4:

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

不幸的是,我不认为你可以实现你想要的,因为在一个错误PAGE_COUNT时允许分割上的细节带。 否则evaluationTime=now"Page " + $V{PAGE_NUMBER} + " of " + $V{PAGE_COUNT}"可能会工作。



Answer 5:

这应该有助于通过使用evaluationTime作为报告

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


文章来源: Show “Page X of Y” using a single text field