I am generating a report from a JRBeanCollectionDataSource. This report is about a customer's order.
This is my code
public class Customer
{
private String customerName;
private String customerNo;
private String customerAddress;
private ArrayList<CustomerOrder> customerOrders;
//Getters and Setters
}
private class CustomerOrder
{
private String itemName;
private BigDecimal amount;
private int itemQuantity;
//Getters and Setters
}
When a customer a report containing the customer details and a list of the customer orders need to be generated.
Since JRBeanCollectionDataSource takes a collection, this is what i did.
Customer cust; //Customer Instance
ArrayList<Customer> custList = new ArrayList<Customer>();
custList.add(cust);
JRBeanCollectionDataSource rptData = new JRBeanCollectionDataSource(custList);
How can i extract the CustomerOrder list in Customer and pass it as a subreport?
You should be able to set the datasource expression for the subreport:
new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{customerOrders})
The resulting xml should have a subreport tag that resembles:
<subreport>
<reportElement uuid="e9fc4a60-3844-41b7-a38c-768f06f09b44" x="0" y="57" width="555" height="68"/>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{customerOrders})]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "report2_subreport1.jasper"]]></subreportExpression>
</subreport>
The only other thing you need to check is that the Language for the report properties is set to Java.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With