我想Page X of Y根据常见的解决方案创建一个包含的文本字段,而不将其分为两部分.我的文本字段包含"Page " + $V{currentPage} + " of " + $V{PAGE_NUMBER}"有evaluationTime=auto.
假设我有10页的报告.三个是Title Band,六个是Detail Band,一个是Summary Band.我的结果显示"Page 0 of 10"为标题带 S,对于正确的计数详细带 S,然后"Page 0 of 10"在总结波段秒.
你如何确保变量在任何地方计算,而不仅仅是在细节带?
Dav*_*vis 25
对于Jaspersoft Studio v6,或者如果第一个页码重复,请尝试使用此解决方案,该解决方案使用$V{MASTER_CURRENT_PAGE}并且$V{MASTER_TOTAL_PAGE}评估时间为Master.
对于其他版本的Jaspersoft Studio,请尝试后续小节中概述的步骤.
创建一个变量如下:
V_CURRENT_PAGE_NUMBER1$V{PAGE_NUMBER}
0,请使用$V{PAGE_NUMBER} + 1.1 of Y,请将Expression设置为$V{PAGE_NUMBER}而不是初始值表达式,并将初始值表达式保留为空.Page这些设置如下图所示:
设置表达式以1防止其值null.也就是说,如果页脚显示Page null为4,则可能意味着尚未设置Expression.
变量已创建.
添加页脚页带如下:
页脚已添加.
创建一个文本字段,如下所示:
msg("Page {0} of {1}", $V{V_CURRENT_PAGE_NUMBER}, $V{PAGE_NUMBER})Auto这些设置如下图所示:
单个文本字段已创建.
对于包含三个页面和摘要页面的报表,预览报表显示:
摘要页面显示:
有关详细信息,请参阅Robert Ensinger 关于此主题的博客文章.
Mar*_*inW 11
我尝试了这种方法,但最终得到了错误的页码:{1 / 7,1/7,2/7,3/7,4/7,5/7,6/7}.
对于JasperReports 6+,使用MASTER_CURRENT_PAGE和MASTER_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>
Run Code Online (Sandbox Code Playgroud)
请参阅:http://jasperreports.sourceforge.net/sample.reference/book/index.html
对于页面历史记录显示如下: 页面:第 1 页(共 5 页)
使文本字段值如下所示,并将评估时间更改为Master:
"Page: "+$V{MASTER_CURRENT_PAGE}+" of "+$V{MASTER_TOTAL_PAGES}
Run Code Online (Sandbox Code Playgroud)
来源:
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25344 次 |
| 最近记录: |