我有一個條形圖和一張桌子的報告。這兩個元素由從我的Java應用程序傳遞到報告的對象列表填充。如何將Java應用程序中的對象列表傳遞給子報表?
現在我想把這兩個元素放在兩個不同的分報告,但我不知道如何將對象列表傳遞給子報表。我已將每個對象的字段添加爲主報表中的字段,並作爲子報表中的參數添加,但不起作用。
任何人都可以幫助我解決這個問題嗎?
我有一個條形圖和一張桌子的報告。這兩個元素由從我的Java應用程序傳遞到報告的對象列表填充。如何將Java應用程序中的對象列表傳遞給子報表?
現在我想把這兩個元素放在兩個不同的分報告,但我不知道如何將對象列表傳遞給子報表。我已將每個對象的字段添加爲主報表中的字段,並作爲子報表中的參數添加,但不起作用。
任何人都可以幫助我解決這個問題嗎?
事情是這樣的:
通行證收集到主報告參數,並使用此參數的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)。
sanBez,我做了任何你已經解釋過的事情,但是當我點擊預覽按鈕時我得到了以下錯誤:無法實例化JRDataSource類型。你知道我必須做什麼嗎? – sylvester
顯示數據源表達式。 並參見例如:http://stackoverflow.com/questions/7960149/cannot-instantiate-the-type-listproduct – sanBez
sanBez非常感謝您的幫助。我爲每個子報表的數據源表達式放置了$ P {REPORT_DATA_SOURCE}。我是否必須更改參數或參數映射表達式屬性中的任何內容?另外,我是否必須在每個子報告中定義一個參數?我把我的條形圖放在subreport1的標題帶上,我的表格放在subreport2的帶子上。 – sylvester
[如何將ArrayList傳遞給JasperReports?](http://stackoverflow.com/questions/3624562/how-to-pass-arraylist-to-jasperreports)&[列出
你嘗試搜索SO嗎? –
問題不清楚。你想要將所有的dataSource的值(對象列表)傳遞給子報表嗎? 你想在子報表中顯示什麼? 是什麼意思「現在我想把這兩個元素放在兩個不同的子報告中」?您只有一個對象列表... – sanBez