当前位置: 首页 > 知识库问答 >
问题:

无法在 Jasper 报告中添加对象列表 [重复]

茅才
2023-03-14

我有一个Java的DTO对象设计如下:

Product
|__ name
|__ List<ClientDTO> clients

我给Jasper的DTO产品是这样的:

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

使用Jaspersoft Studio,我可以轻松显示字段名称,但我找不到显示客户端列表的方法。

我尝试使用调色板中可用的元素List,但它需要一个数据集。好了,我创建了一个clientDataset。但是,我如何向clientDataset提供客户端列表?

共有1个答案

祝叶五
2023-03-14

1) 在主报表中,创建DataSet

2) 从Palette中,为报告添加列表元素

3)打开一个窗口,选择您的数据集

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

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>
 类似资料:
  • 我正在从. jasper文件加载jasper报告文件以提高性能,如下所示。 但是我现在有一个要求,动态形成的查询必须设置为. jasper(编译)文件。有没有办法做同样的事情?

  • 是否可以在报告中添加一个按钮,任何操作都将被修复? 示例:按钮“查看”,将显示更详细的统计信息。 备注: 我不完全理解如何制作文本元素的按钮

  • Jasper reports正在努力从vip.user中找到字段。当我将prompt作为false使用defaultValueExpression填充数组列表时,它可以工作。

  • 我需要生成一个jasper文档,可由用户编辑后使用Microsoft Word构建。我遇到的问题是,一旦生成文档,我就不能使用ENTER键在现有段落之间添加新段落。发生的情况是,文本消失在后面的段落,隐藏在下面。 下面是XML报告: 下面是我应该在构建后轻松自定义的结果文档。转到下载文档

  • 我有一个要转换成CSV格式的XML。我使用Jasper Reports来转换它,并使用Jasper Studio来设计JRXML。 这是XML: 我希望CSV格式包含以下列: fields_exitence分为3个(nonMap、ux和两者),属性在

  • 我有下一个代码: 它可以编译,但在运行时我有不支持的操作异常。为什么会发生这种情况?