【发布时间】:2012-11-07 16:11:25
【问题描述】:
我正在使用 bean 对象作为数据源。数据源包含几个属性——其中一个是我尝试使用的行项目列表。按 bean 看起来像这样:
String name;
String address;
List<DetailRecord> records;
我想让记录显示为报告中的详细信息行。我知道我需要设置一个子报表,但我不确定如何设置子报表以使用当前父数据项的记录元素作为数据源。
【问题讨论】:
我正在使用 bean 对象作为数据源。数据源包含几个属性——其中一个是我尝试使用的行项目列表。按 bean 看起来像这样:
String name;
String address;
List<DetailRecord> records;
我想让记录显示为报告中的详细信息行。我知道我需要设置一个子报表,但我不确定如何设置子报表以使用当前父数据项的记录元素作为数据源。
【问题讨论】:
好的..我想出了我需要做什么。对于子报告,我需要指定数据源 这样:
new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{records})
这里有几个“陷阱”让我卡了一会儿:
由于父项中的记录字段默认为字符串,我的尝试一直在轰炸(没有明显错误)。一旦我将其更改为列表,事情就开始起作用了。
【讨论】:
另一种解决方案,它可能会对某人有所帮助:)。
来自主报告,用于子报告集 - 使用数据源表达式。
数据源表达式设置如 - new MySubRepClass($F{list}.get(counter))。
MySubRepClass 是作为子报告的 bean 数据源的类(像数据源 bean 一样设置),列表(主报告中的属性)包含其实例。
MySubRepClass 应该实现 JRDataSource
幸运!
【讨论】: