2017-08-25 85 views
1

我设计了这样一个Java DTO对象:无法添加对象列表中的碧玉报告

Product 
|__ name 
|__ List<ClientDTO> clients 

我给我的DTO产品碧玉是这样的:

JRDataSource datasource= new JRBeanArrayDataSource(new Product[]{product}); 

随着的JasperSoft工作室,我可以很容易地显示字段名称,但我找不到显示客户端列表的方法。

我尝试使用调色板中可用的元素列表,但它需要一个数据集。好的,我创建了一个clientDataset。但我怎样才能将clientDataset与我的客户List一起提供?

回答

0

1)在主报告中,创建数据集

2)从面板,添加列表元素打开一个窗口,报告

3),选择您的DataSet

4)双击在List元素上。在DataSet菜单,填写“使用的JRDataSource表达”与new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{customers})

5)返回到DataSet中安装程序,添加字段

6)双击列表中拖动和删除其字段

就是这样!

源代码生成:

<componentElement> 
      <reportElement x="110" y="4" width="444" height="20" uuid="118abb83-369d-408b-a3bc-194b978d3fab"/> 
      <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd"> 
       <datasetRun subDataset="customersDataSet" uuid="ce33a9a6-0aaf-4df0-abb7-fc52b0553191"> 
        <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{customers})]]></dataSourceExpression> 
       </datasetRun> 
       <jr:listContents height="20" width="444"> 
        <textField> 
         <reportElement x="0" y="0" width="30" height="20" uuid="a65f7a8f-1530-4657-ac3d-a053ea18cb14"/> 
         <textFieldExpression><![CDATA[$F{civilite}]]></textFieldExpression> 
        </textField> 
        <textField> 
         <reportElement x="30" y="0" width="120" height="20" uuid="5f85470a-8c28-4550-aac8-e414ff64fe90"/> 
         <textFieldExpression><![CDATA[$F{firstName}]]></textFieldExpression> 
        </textField> 
        <textField> 
         <reportElement x="150" y="0" width="140" height="20" uuid="6a8c4e04-4278-4595-845f-67be590d9210"/> 
         <textFieldExpression><![CDATA[$F{lastName}]]></textFieldExpression> 
        </textField> 
       </jr:listContents> 
      </jr:list> 
</componentElement> 



<subDataset name="customersDataSet" whenResourceMissingType="Empty" uuid="10331e47-e08a-42d9-8733-bcf103ea7aed"> 
    <queryString> 
     <![CDATA[]]> 
    </queryString> 
    <field name="civilite" class="java.lang.String"/> 
    <field name="firstName" class="java.lang.String"/> 
    <field name="lastName" class="java.lang.String"/> 
</subDataset>