0

目标是以下结构

Static Text
--------------------
Category 1
    SubCategory 1_1
    SubCategory 1_2
    ...
Category 2
    SubCategory 2_1
    ....
...
--------------------
StaticText

要获取动态数据,我使用以下 bean 结构

public class  BeanFactory {

  public  static Collection getVehicleData() {return the Collection}
}

类别类

public class VehicleData {
  private String category;
  private List<WarningData> warnings;
}

WarningData 类是一个 POJO。那么谁能给我一个提示,我怎样才能得到这种结构?

  1. 我尝试使用两个数据集,一个是使用 beanfactory 创建数据,一个应该使用车辆数据类来获取警告数据。但这对我不起作用。
  2. 我试着把它分组。但我不知道如何访问警告数据
  3. 我应该使用 iReport 设计器中的表格还是列表组件?
  4. 我可以在表达式编辑器中使用循环吗?

更新 以明确这一点。我如何迭代子类别?我对类别的迭代取得了成功,但我不知道如何对子类别的每个类别进行迭代。

4

2 回答 2

0

解决方案是丽莎评论中的一种暗示。我创建了一个“平面”结构,而不是问题中的数据结构,如下所示:

public class VehicleData2 {
   private String category;
   private String categoryIconPath;
   private String iconPath;
   private String headline;
   private String warning;
}

最后三个属性被封装在一个新的类WarningData 中。但是我无法迭代抛出这个警告数据列表,所以在我的解决方案中,类别中有冗余。但是使用这种结构,可以为类别使用报告组,并将警告数据放入 jasperreport 的详细信息部分。

于 2013-08-29T13:05:14.857 回答
0

迭代记录的子数据的唯一两种方法似乎是SubreportsTables

每个数据源都是通过平面列表的迭代器。您的报表仅包含一个重复概念,即为数据源中的每条记录重复一个详细信息部分。表和子报表都有自己的数据源(这很可能取决于包含报表的当前迭代),并相应地重复它们的Detail部分。由于它们可以嵌套,jasper 理论上允许根据需要进行任意循环。只是您需要为每个循环引入子报表或表格:

  • 根记录的详细信息部分
  • 子报表详细信息部分
  • 详细信息部分
于 2019-08-06T08:41:37.963 回答