我想创建一个包含Page X of Y
的文本字段,而不是根据常见解决方案将其分为两部分。我的文字字段包含"Page " + $V{currentPage} + " of " + $V{PAGE_NUMBER}"
和evaluationTime=auto
。
假设我有10页的报告。三个是标题带,六个是细节带,一个是摘要带。我的结果显示标题带的"Page 0 of 10"
,详细信息带的正确计数,然后摘要带<{1}} /强>秒。
您如何确保变量在任何地方计算,而不仅仅是细节带?
答案 0 :(得分:24)
对于Jaspersoft Studio v6,或者如果第一个页码重复,请尝试this solution,使用
$V{MASTER_CURRENT_PAGE}
和$V{MASTER_TOTAL_PAGE}
,评估时间为Master
。
对于其他版本的Jaspersoft Studio,请尝试后续小节中列出的步骤。
按如下方式创建变量:
V_CURRENT_PAGE_NUMBER
1
$V{PAGE_NUMBER}
0
,请使用$V{PAGE_NUMBER} + 1
。1 of Y
,请将表达式设置为$V{PAGE_NUMBER}
而不是初始值表达式,并将初始值表达式保留为空。Page
这些设置如下图所示:
将表达式设置为1
可防止其值为null
。也就是说,如果页脚显示 Page null 为4 ,则可能意味着表达式尚未设置。
创建变量。
添加页脚频段,如下所示:
添加了页脚。
创建一个文本字段,如下所示:
答案 1 :(得分:10)
我尝试了this approach,但最终得到了错误的页码:{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
答案 2 :(得分:8)
如您所述,常用方法使用两个独立的文本字段:
当前页码
评估时间 $V{PAGE_NUMBER}
:现在
总页数
评估时间 $V{PAGE_NUMBER}
:报告
答案 3 :(得分:3)
关于当前页码,evaluationTime=now
和$V{PAGE_NUMBER}
是您的答案。
不幸的是,我不认为你能达到你想要的效果,因为当{4}}中有一个错误时,细分带开启了Split Allowed。否则evaluationTime=now
和"Page " + $V{PAGE_NUMBER} + " of " + $V{PAGE_COUNT}"
可能会有效。
答案 4 :(得分:1)
这是我的作品(与Dave的回答有点不同)
*使用JasperSoft Studio
然后在文本字段中输入表达式:
"Pág. " + $V{PAGE_NUMBER} +"/" + $V{V_CURRENT_PAGE_NUMBER}
希望获得帮助!
答案 5 :(得分:0)
通过将 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>
答案 6 :(得分:0)
对于页面历史记录显示如下:页面:1 of 5
输入文本字段:
"Page: "+$V{MASTER_CURRENT_PAGE}+" of "+$V{MASTER_TOTAL_PAGES}
来源:
<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>
答案 7 :(得分:0)