3

我正在使用 bean 对象作为数据源。数据源包含几个属性——其中一个是我尝试使用的行项目列表。按 bean 看起来像这样:

String name;
String address;
List<DetailRecord> records;

I want to have the records show up as the detail lines int the report. I know I need to setup a sub-report, but I'm not sure how to set the sub-report to use the records element of the current parent data item as the datasource.

4

2 回答 2

6

好的..我知道我需要做什么。对于子报告,我需要以这种方式指定数据源:

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

这里有几个“陷阱”让我停留了一段时间:

  • 您必须使用完整的类名(仅使用 JRBeanCollectionDataSource)将不起作用
  • 在主报告中,您必须将记录的类型设置为 java.util.list(或适当的类。

由于父项中的记录字段默认为字符串,我的尝试一直在轰炸(没有明显的错误)。一旦我将其更改为列表,事情就开始起作用了。

于 2012-11-07T16:39:14.857 回答
1

另一种解决方案,它可能会帮助某人:)。

  1. 来自主报告,对于子报告集 - 使用数据源表达式。

  2. 数据源表达式集,如 - new MySubRepClass($F{list}.get(counter))。

  3. MySubRepClass 是作为子报告的 bean 数据源的类(像数据源 bean 一样设置),并且列表(主报告中的属性)包含其实例。

  4. MySubRepClass 应该实现 JRDataSource

幸运!

于 2013-06-03T12:18:21.850 回答