【发布时间】:2016-07-27 19:48:36
【问题描述】:
要求:
在 Jasper 报告中除最后一页之外的每一页的页脚中添加 “继续下一页...” 文本。所以基本上我想让用户知道在报告的下一页还有更多内容要查看。我知道 page x of y 的事情,这也让我们知道是否还有更多页面可以查看,但我想让它更加用户友好。
到目前为止我做了什么!
-
创建如下自定义变量:
<variable name="pNumber" class="java.lang.Integer" resetType="Page"> <variableExpression><![CDATA[1]]></variableExpression> <initialValueExpression><![CDATA[$V{PAGE_NUMBER} + 1]]></initialValueExpression> </variable> -
在页脚中创建了如下文本字段:
<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 社区版
【问题讨论】:
-
嗨@AlexK,感谢您的评论。我检查了提到的链接。 1. 第一个链接使用 Textfield 表达式仅根据条件更改文本。这种情况也适用于我的情况。但我想在 Print When Expression 中使用它,如果它不应该显示在页面上,它将完全隐藏元素本身。所以,我不认为这适合我。 2. 我猜 Mihir 给出的解决方案是不完整的。没有解释。我也尝试在 summay 中添加他的表达式,但随后摘要本身消失了:(
-
您是否尝试过 Boolean.FALSE 或 Boolean.TRUE 而不是 false 或 true ?或从您的表达式“new Boolean(($V{pNumber}.equals($V{PAGE_NUMBER})) == false”中删除您的 == false。
标签: jasper-reports