如何检查当前打印页面是否实际上是最后一个打印页面?将当前页码与最后一页号码进行比较
我曾尝试以下:
$V{currentPage}.intValue() == $V{totalNumberOfPages} ?
Boolean.TRUE : Boolean.FALSE
如何检查当前打印页面是否实际上是最后一个打印页面?将当前页码与最后一页号码进行比较
我曾尝试以下:
$V{currentPage}.intValue() == $V{totalNumberOfPages} ?
Boolean.TRUE : Boolean.FALSE
等了很长的时间..但没有从回复#1 ... 无论如何,我发现我的解决方案..
首先在摘要带放此行
<printWhenExpression><![CDATA[new Boolean($P{REPORT_PARAMETERS_MAP}.put("LastPageNumber",$V{PAGE_NUMBER}).equals("dummyPrintWhen"))]]></printWhenExpression>
请记住,上面这行必须只在报告的汇总段中。
之后,您可以在报告中的任何时间点比较此参数以查找最后一个页码。
对于实例
<printWhenExpression><![CDATA[new Boolean(!$V{PAGE_NUMBER}.equals($P{REPORT_PARAMETERS_MAP}.get("LastPageNumber")))]]></printWhenExpression>
用下面的打印当表达摘要带被再次打印:
new Boolean(($P{REPORT_PARAMETERS_MAP}.put(
"LastPageNumber",$V{PAGE_NUMBER}).equals("dummyPrintWhen")) ||
Boolean.TRUE)
您还可以使用的containsKey TOT测试为重点是否存在等:
new Boolean(!$P{REPORT_PARAMETERS_MAP}.containsKey("LastPageNumber"))
数字表达式也有效,此表达式在以往除了在参数所设定的一个Y页面:
new Boolean($P{REPORT_PARAMETERS_MAP}.get("LastPageNumber") < $V{PAGE_NUMBER})
我的问题是,我在报告的末尾创建了多个组页脚几个交叉表,以恒定的组表达,使他们得到的只是印刷一旦。通过在第一个页脚中设置参数,我现在可以最终抑制列标题而不诉诸子报表。做得好!!
浆果。
谢谢你的回答,我个人使用过'$ P {REPORT_PARAMETERS_MAP} .put( “LastPageNumber”,$ V {PAGE_NUMBER})。equals(“dummyPrintWhen”)||当'exporsion'和'$ V {PAGE_NUMBER} .equals($ P {REPORT_PARAMETERS_MAP} .get(“LastPageNumber”))时,对于'print when'表示的字段'print' – Nelson 2013-09-19 09:43:19
不幸的是你的做法并没有为我工作,我不知道为什么。有你的代码中的一些东西,容易出错这样
<![CDATA[new Boolean($P{REPORT_PARAMETERS_MAP}.put("LastPageNumber",$V{PAGE_NUMBER}).equals("dummyPrintWhen"))]]></printWhenExpression>
我认为事实Summary Band
只调用一次,但你有一个糟糕的编程习惯,因为如果没有与KEY in the MAP
密钥关联,它将返回null,你调用方法equals
就可以得到NULLPOINTEREXCEPTION
,但我认为不是这种情况。
你应该扭转这样
<![CDATA[new Boolean("dummyPrintWhen".equals($P{REPORT_PARAMETERS_MAP}.put("LastPageNumber",$V{PAGE_NUMBER})))]]></printWhenExpression>
我在这个问题上所用的解决方法如下。
1)。在jasperreports
parameter name="totalRecordsOnReport" class="java.lang.Integer"
2创建的参数)。传递您的详细信息的总计记录作为参数。
HashMap<Object,Object>parameters=....
parameters.put("totalRecordsOnReport",yourDetailRowCount);
我需要打印一些东西只在细节下面的最后一页,我使用此代码。
component print when expression
$V{REPORT_COUNT}.equals($P{totalRecordsOnReport})
,并打印在最后一页。
您可以详细说明如何在设计模式下执行此操作吗? – sarwar026 2012-09-09 10:46:55
你能否向我解释你想做什么,我可以帮助你。如果我可以帮助某人,我总是很开心。 – Mihir 2012-09-10 05:06:00
要点是:比较如果参数为空,则Integer.equals(Integer)将返回false。并且是参数为空(当汇总带正在处理时被设置)。所以你可以把地图布尔(或任何其他对象),并在条件下简单地使用'$ P {REPORT_PARAMETERS_MAP} .get(“isLastPage”)IS NULL' – Perlos 2012-11-08 08:28:14