我有一個目標列表,其中每個目標都有另一個列表列表。我想要使用子報表顯示子數組列表中的詳細信息。我想爲子數組列表中的每個對象都有一個子報表。在iReport列表中創建子報表
我面臨的問題是,我似乎無法找到一種方法來指定arraylist作爲子報表的數據源。在嘗試創建數據源時,我無法選擇構建列表的數據集的字段,只能選擇主報表的字段。
在iReport中可以這樣做嗎?我現在堅持了這一段時間。任何幫助表示讚賞。 :)
我有一個目標列表,其中每個目標都有另一個列表列表。我想要使用子報表顯示子數組列表中的詳細信息。我想爲子數組列表中的每個對象都有一個子報表。在iReport列表中創建子報表
我面臨的問題是,我似乎無法找到一種方法來指定arraylist作爲子報表的數據源。在嘗試創建數據源時,我無法選擇構建列表的數據集的字段,只能選擇主報表的字段。
在iReport中可以這樣做嗎?我現在堅持了這一段時間。任何幫助表示讚賞。 :)
有了這些信息將是答案。
主要豆(你的目標是什麼?),包含其他的bean(SubBean
)的List
。
public class Bean {
private String var1;
private List<SubBean> subBeans;
public String getVar1() {
return var1;
}
public void setVar1(String var1) {
this.var1 = var1;
}
public List<SubBean> getSubBeans() {
return subBeans;
}
public void setSubBeans(List<SubBean> subBean) {
this.subBeans = subBean;
}
}
子豆
public class SubBean {
private String var2;
public SubBean(String var2){
this.var2 = var2;
}
public String getVar2() {
return var2;
}
public void setVar2(String var2) {
this.var2 = var2;
}
}
如何將SubBean列表傳遞給子報表。
您需要在您的主報告中的字段subBeans。
<field name="subBeans" class="java.util.List"/>
我建議你通過開發文件文件的位置作爲一個參數(注碧玉報告需要絕對路徑)ES。在主報告
<parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"/>
和在Java通過它(例如,在工作目錄子文件夾 「碧玉」 中是subreport.jasper的位置)
paramMap.put("SUBREPORT_DIR", new File("jasper").getAbsolutePath() + File.separator);
現在只需從主報告中調用你的子報表(需要編譯成.jasper)。
<subreport>
<reportElement x="105" y="4" width="400" height="100"/>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{subBeans})]]></dataSourceExpression>
<subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "subreport.jasper"]]></subreportExpression>
</subreport>
因此:
我創建的子報告傳遞的SubBean
的List
當前Bean
new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{subBeans})
指示編譯的絕對位置的新JRDataSource subreport.jasper
$P{SUBREPORT_DIR} + "subreport.jasper"
所以現在在你的報表可以使用領域:在SubBean
的var2
,只是在subreport.jrxml
<field name="var2" class="java.lang.String"/>
感謝您的回覆。 本質上,我有一個父列表組件在ireport。裏面有我的報告。 subBeans字段是列表組件數據集的一部分,而不是主要報告。我知道它有可能使用主要報告字段來開發數據源表達式,我的問題是我想從我的數據集中使用一個字段。那可能嗎? – Victo
「我想從我的數據集中使用一個字段」,在主報告中,或子報表中的主Bean。嘗試使用Beans和一些jrxml編輯問題 –
它定義成這樣,你可以添加你嘗試了一些代碼...?像這樣的問題是非常「挑剔」,我可以嘗試回答,但我需要猜測你真的想做什麼......你的bean對象(一些代碼)如何,你想傳遞給子報表? ..ecc。 –
[如何將主報表數據源傳遞給子報表(JasperReports)?](http://stackoverflow.com/questions/8490563/how-to-pass-main-report-data-source-to-subreport- jasperreports) –