【问题标题】:How to pass a List of JRBeanCollectionDataSource to a subreport如何将 JRBeanCollectionDataSource 列表传递给子报表
【发布时间】:2012-11-14 18:11:00
【问题描述】:

我正在从 JRBeanCollectionDataSource 生成报告。这份报告是关于客户的订单的。

这是我的代码

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
}

当客户需要生成包含客户详细信息和客户订单列表的报告时。 由于JRBeanCollectionDataSource 需要一个集合,这就是我所做的。

Customer cust; //Customer Instance

ArrayList<Customer> custList = new ArrayList<Customer>();
custList.add(cust); 

JRBeanCollectionDataSource rptData = new JRBeanCollectionDataSource(custList);

如何提取Customer 中的CustomerOrder 列表并将其作为子报表传递?

【问题讨论】:

    标签: jasper-reports ireport


    【解决方案1】:

    您应该能够为子报表设置数据源表达式:

    new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{customerOrders})
    

    生成的 xml 应该有一个类似于以下内容的子报表标记:

    <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>
    

    您需要检查的唯一另一件事是报告属性的Language 设置为Java

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多