一个报告中有多个部分

时间:2012-03-13 23:56:09

标签: jasper-reports

我正在尝试学习如何使用Jasper报告而失去了很多头发。基本上,我有大约五个java.util.List个对象,每个对象都输入一个代表我的数据的不同数据类型:

public class Person { 

    private int id;

    private String firstName;

    private String lastName;

    private int age;

    // accessors/mutators omitted for brevity
}

public class Place {

    private int id;

    private String name;

    private String type;

    private String state;

    // accessors/mutators omitted for brevity
}

public class Thing {

    private int id;

    private String name;

    private int rating;

    // accessors/mutators omitted for brevity
}  

我只想在表格中显示我的数据:

a

不幸的是,Jasper Reports似乎只是设计用于处理一个数据源。我一直试图弄清楚这一段时间,我已经撞墙了。如何在Jasper Report *.jrxml文件中包含多个表示所述数据源的数据源和表?

2 个答案:

答案 0 :(得分:2)

您可以做的是使用子报告。使用所需的标题部分创建主报告。在主报表中,您将创建三个参数,即JRDatasources,每个子报表一个。然后,为每个所需的表创建每个子报表。

然后你在主报告中添加每个作为子报告,你可能不得不玩它,但是我认为放在最好的地方可能是摘要。使用ireport时,它会提示您选择传递参数作为子报表的数据源。

理想情况下,有一种方法可以将参数绑定到详细信息部分,因为在iReport中,您现在可以拥有多个详细信息部分。不幸的是,我没有找到办法做到这一点,如果有人知道一种方式,请downvote并添加答案。

虽然还有第二个选项,您可以在一个报表中创建自己的自定义数据源和多个详细信息部分。从本质上讲,你最终会创建一个新的对象,将它们全部合并为一个......从来没有想到这是一个可怕的想法。

答案 1 :(得分:1)

我使用jasper报告的list元素执行此操作,并将数据源作为参数传递给报告。 确保将列表放在一个可以增长的频段中,否则您的内容可能会被截断。

            <componentElement>
                <reportElement x="0" y="321" width="442" height="13" isRemoveLineWhenBlank="true"/>
                <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" printOrder="Vertical">
                    <datasetRun subDataset="produkt">
                        <dataSourceExpression><![CDATA[$P{produkteDataSource}]]></dataSourceExpression>
                    </datasetRun>
                    <jr:listContents height="13" width="442">
                        <!-- Content goes here -->
                    </jr:listContents>
                </jr:list>
            </componentElement>