2013-05-29 36 views
0

我有一個條形圖和一張桌子的報告。這兩個元素由從我的Java應用程序傳遞到報告的對象列表填充。如何將Java應用程序中的對象列表傳遞給子報表?

現在我想把這兩個元素放在兩個不同的分報告,但我不知道如何將對象列表傳遞給子報表。我已將每個對象的字段添加爲主報表中的字段,並作爲子報表中的參數添加,但不起作用。

任何人都可以幫助我解決這個問題嗎?

+0

[如何將ArrayList傳遞給JasperReports?](http://stackoverflow.com/questions/3624562/how-to-pass-arraylist-to-jasperreports)&[列出作爲JRBeanCollectionDataSource到子報表](http://stackoverflow.com/q/2735497/876298)&[將數據傳遞給子報表](http://stackoverflow.com/q/7080527/876298)&[如何將JRBeanCollectionDataSource的列表傳遞給子報表](http://stackoverflow.com/q/13384698/876298) –

+0

你嘗試搜索SO嗎? –

+0

問題不清楚。你想要將所有的dataSource的值(對象列表)傳遞給子報表嗎? 你想在子報表中顯示什麼? 是什麼意思「現在我想把這兩個元素放在兩個不同的子報告中」?您只有一個對象列表... – sanBez

回答

0

事情是這樣的:

通行證收集到主報告參數,並使用此參數的DataSource子報表:

//主報告

JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(listOfObject); 
Map<String, Object> params = new HashMap<String, Object>(); 
params.put("myList", listOfObject); 
jasperPrint = JasperFillManager.fillReport(jasperReport, params, ds); 

//結束的java代碼java-code

(可能是

JasperFillManager.fillReport(jasperReport, params, new JREmptyDataSource()) 

,如果你不需要顯示主報表數據)

在main.jrxml報表參數myList中定義爲java.util.Collection中

添加子報表合併到主報告(摘要進帶)
設置在主報告子報表屬性:
連接類型=使用數據源表達
數據源表達=新JRBeanCollectionDataSource($ P {myList中})

在子報表所需字段中定義(基於listOfObjects)。

+0

sanBez,我做了任何你已經解釋過的事情,但是當我點擊預覽按鈕時我得到了以下錯誤:無法實例化JRDataSource類型。你知道我必須做什麼嗎? – sylvester

+0

顯示數據源表達式。 並參見例如:http://stackoverflow.com/questions/7960149/cannot-instantiate-the-type-listproduct – sanBez

+0

sanBez非常感謝您的幫助。我爲每個子報表的數據源表達式放置了$ P {REPORT_DATA_SOURCE}。我是否必須更改參數或參數映射表達式屬性中的任何內容?另外,我是否必須在每個子報告中定義一個參數?我把我的條形圖放在subreport1的標題帶上,我的表格放在subreport2的帶子上。 – sylvester

相關問題