【问题标题】:How to add "Continued on next page..." text in the footer of each page except last?如何在除最后一页之外的每一页的页脚中添加“继续下一页...”文本?
【发布时间】:2016-07-27 19:48:36
【问题描述】:

要求:

Jasper 报告中除最后一页之外的每一页的页脚中添加 “继续下一页...” 文本。所以基本上我想让用户知道在报告的下一页还有更多内容要查看。我知道 page x of y 的事情,这也让我们知道是否还有更多页面可以查看,但我想让它更加用户友好。

到目前为止我做了什么!

  1. 创建如下自定义变量:

    <variable name="pNumber" class="java.lang.Integer" resetType="Page">
        <variableExpression><![CDATA[1]]></variableExpression>
        <initialValueExpression><![CDATA[$V{PAGE_NUMBER} + 1]]></initialValueExpression>
    </variable>
    
  2. 在页脚中创建了如下文本字段:

    <textField evaluationTime="Auto">
            <reportElement mode="Opaque" x="0" y="0" width="555" height="15" backcolor="#D1CBCB" uuid="dd084b9e-66ab-494a-ad7d-0860be1796fb">
                <property name="com.jaspersoft.studio.unit.x" value="pixel"/>
                <property name="com.jaspersoft.studio.unit.y" value="pixel"/>
                <property name="com.jaspersoft.studio.unit.height" value="pixel"/>                  
            </reportElement>
            <textElement textAlignment="Center" verticalAlignment="Middle">
                <font isBold="true"/>
            </textElement>
            <textFieldExpression><![CDATA["Continued on next page..." + $V{pNumber} +"!="+ $V{PAGE_NUMBER} + " : "+ new Boolean(($V{pNumber}.equals($V{PAGE_NUMBER})) == false)]]></textFieldExpression>
        </textField>
    

现在,当我运行总共有 3 页的报告时,TextField 内容会在每个页面中显示以下文本:

第一页:接下页...1!=3 : true

第二页:接下页...2!=3 : true

第三页:接下页...3!=3 : false

此表达式在文本字段表达式中工作得非常好。现在,我想在 TextField 的 PrintWhen Expression 中使用相同的条件,如果它返回 true,则允许我显示“继续...文本”,如果返回 false,则不显示任何内容。

但是,如果我在同一 TextField 的 Print When Expression 中使用此条件,则 TextField 在任何一种情况下都不会显示(真/假)。表达式如下:

<printWhenExpression><![CDATA[new Boolean(($V{pNumber}.equals($V{PAGE_NUMBER})) == false)]]></printWhenExpression>

我在这个问题上进行了很多搜索,但没有找到任何直接的解决方案。顺便说一句,我正在使用 TIBCO Jaspersoft® Studio 6.1.1 - Visual Designer - JasperReports 社区版

【问题讨论】:

标签: jasper-reports


【解决方案1】:

在 Print When Expression 中使用它的问题是它的 evaluationTime 你无法更改,所以你需要像 Compare current page number with last page number 这样的黑客

然而,这个问题的真正解决方案是使用&lt;lastPageFooter&gt; 带,添加它是为了能够在最后一页页脚中包含不同的内容,因此不需要带有黑客的表达式,只需不要使用textField .

【讨论】:

  • 非常感谢@Petter Friberg。您建议同时使用页脚和最后一页页脚解决了我的问题。这是对我的问题的非常简单直接的解决方案。再次感谢:)
猜你喜欢
  • 2014-08-20
  • 1970-01-01
  • 2011-11-04
  • 2020-07-10
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 2015-09-03
  • 2021-06-06
相关资源
最近更新 更多