如何檢查當前打印頁面是否實際上是最後一個打印頁面?將當前頁碼與最後一頁號碼進行比較
我曾嘗試以下:
$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