2015-12-02 236 views
0

我需要將對象和列表傳遞給jrxml文件。我在JRBeanCollectionDataSource中發送參數映射和列表中的對象。我需要將對象發送給子報告。 1.什麼應該是我應該用於該對象的類(因爲它不是原始數據類型,而是用戶定義的類型)。目前我使用java.lang.Object。 2.在我看到的大多數例子中,List或Map都被髮送到子報告。我需要傳遞Object。將對象傳遞給jrxml,並將對象傳遞給其子報表

HashMap<String, Object> parameterMap = new HashMap<String, Object>(); 
parameterMap.put("json", taxYearReportBean.getTaxYearBean()); 
jasperPrint = JasperFillManager.fillReport(path, parameterMap, new JRBeanCollectionDataSource(taxYearReportBean.getSmallIssList())); 
jp.add(jasperPrint); 

類:

public class TaxYearBean{ 
Date startDate; 
Date endDate; 
String method; 
List<LimitationBean> limitationList = new ArrayList<LimitationBean>(); 

public Date getStartDate() { 
    return startDate; 
} 
public void setStartDate(Date startDate) { 
    this.startDate = startDate; 
} 
public Date getEndDate() { 
    return endDate; 
} 
public void setEndDate(Date endDate) { 
    this.endDate = endDate; 
} 
public String getMethod() { 
    return method; 
} 
public void setMethod(String method) { 
    this.method = method; 
} 
public List<LimitationBean> getLimitationList() { 
    return limitationList; 
} 
public void setLimitationList(List<LimitationBean> limitationList) { 
    this.limitationList = limitationList; 
} 
} 
+0

在子報表中(我想是在詳細的樂隊中)你喜歡只顯示1 TaxYearBean?或者您想顯示TaxYearBean?中的所有LimitationBean,您可以發佈一些您嘗試過的相關jrxml嗎? –

回答

0

你的主報告必須有類型列表或集合的一個領域。 此字段必須在運行時填充 您的子報表必須具有數據源:表達式JRBeanCollectionDataSource(您的字段名稱),連接類型:使用數據源表達式,Subrepot表達式:您的參數。 將已編譯的子報告報告傳遞給此參數。

0

您可以將對象數據作爲數據源發送給JRXML。 此外,如果列表也應作爲數據源發送給JRXML。

首先設計iReport接受Object作爲數據源:
1)在iReport的class-path中添加項目「src」。
2)在JRXML報表數據源中指定對象package.className。
3)使用Object參數映射TextField。

現在,在源代碼中,使用「JRBeanCollectionDataSource」類發送「JasperFillManager.fillReport()」中的對象列表,以用於Connection。

希望這會有所幫助。