我想创建一个包含一个文本字段Page X of Y
,没有两个部分拆分它,因为按照通常的解决方案。 我的文本字段包含"Page " + $V{currentPage} + " of " + $V{PAGE_NUMBER}"
与evaluationTime=auto
。
比方说,我有一个10页的报告。 三是标题区域 ,六是详细信息区域 ,一个是总结乐队 。 我的结果显示"Page 0 of 10"
为标题区域 S, 具体交易带 S,那么正确的计数"Page 0 of 10"
的总结波段秒。
如何确保该变量计算无处不在,不仅在细节上带 ?
的JasperSoft工作室,6+
对于工作室的JasperSoft V6,或者如果第一页号是重复的,试试这个解决方案 ,它使用$V{MASTER_CURRENT_PAGE}
和$V{MASTER_TOTAL_PAGE}
与评价时期Master
。
JasperSoft这个工作室
对于工作室的JasperSoft的其他版本,尝试在随后的小节中列出的步骤。
创建变量
创建一个变量,如下所示:
- 创建一个名为变量
V_CURRENT_PAGE_NUMBER
- 选择变量以打开其属性(下面示出)
- 集表达式来:
1
- 设置初始值表达式到:
$V{PAGE_NUMBER}
- 如果页码显示
0
,用$V{PAGE_NUMBER} + 1
。 - 如果页码始终显示
1 of Y
,设置表达式以$V{PAGE_NUMBER}
而不是初始值表达式,并保留初始值表达空。
- 设置复位类型 :
Page
这些设置在如下图所示:
表达设置为1
防止了它的值null
。 也就是说,如果页脚显示4页为null,则可能意味着表达尚未确定。
该变量被创建。
添加页脚
添加页面页脚区域如下:
- 选择在大纲面板的报告
- 检查总结随着页眉和页脚 ,以确保出现摘要页面上的页脚。
- 添加页面页脚带。
页脚添加。
创建文本字段
创建一个文本字段,如下所示:
- 拖动和单一的文本字段拖放到页面页脚区域。
- 选择该文本字段。
- 设置表达于:
msg("Page {0} of {1}", $V{V_CURRENT_PAGE_NUMBER}, $V{PAGE_NUMBER})
- 设置Evalutation时间 :
Auto
这些设置在如下图所示:
在单个文本字段创建。
预览报告
对于三页再加上一个摘要页的报告,预览报告显示:
摘要页面显示:
见Robert ENSINGER的博客中对这个问题的更多细节。
我试过这种方法 ,但结束了不正确的页码:{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>
请参阅: http://jasperreports.sourceforge.net/sample.reference/book/index.html
常见的做法,正如你所说,使用两个分开的文本字段:
当前页码
$V{PAGE_NUMBER}
与EvaluationTime:现在
总页数
$V{PAGE_NUMBER}
与EvaluationTime:报告
关于当前页码, evaluationTime=now
和$V{PAGE_NUMBER}
是你的答案。
不幸的是,我不认为你可以实现你想要的,因为在一个错误PAGE_COUNT时允许分割上的细节带。 否则evaluationTime=now
和"Page " + $V{PAGE_NUMBER} + " of " + $V{PAGE_COUNT}"
可能会工作。
这应该有助于通过使用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>