3

我需要用不同对象的列表填充一些子报表。基本上可以说我有以下内容:
二手
车子报告 新车子报告

我创建了一个带有变量作为字符串的车辆 bean 类,并为其创建了 getter 和 setter 方法。然后在我的数据源中,我传入一个List<List<String>>作为 detailRows。detailRows 包含一个新车列表和一个二手车列表。所以可以说,我在数据源中传递了 detailRows。
问题是我如何将这两个列表传递给两个子报告?我可以 new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{newVehiclesList})用作子报表 1 new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{usedVehiclesList})的数据源和子报表 2 的数据源吗?
除了我提到的,还有什么需要做的吗?我需要创建和传递任何变量吗?是我上面列出的列表列表的适当使用还是它$F{detailRows}.get(0)

我在主报告中创建了一个字段 detailRows 作为类型列表。然后我将以下内容传递给子报表数据源表达式,new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{detailRows} 有什么方法可以将newVehiclesListfrom detailRows 传递给子报表?

谢谢!

4

3 回答 3

5

选择您的子报表,您可以将属性“连接类型”设置为“使用数据源表达式”,并在“数据源表达式”属性中设置:

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

您的“yourFieldHere”是一个列表(不要忘记将字段属性中的“字段类”也设置为 java.util.List)

于 2012-07-13T11:23:54.830 回答
1

好的,那么您需要创建两个字段类为 java.util.List 的字段,每个列表一个(newVehiclesList 和 usedVehiclesList)。

将您的两个子报表放在您想要的任何位置,然后单击每个子报表,执行以下步骤:

将“连接类型”更改为“使用数据源表达式”,然后将“数据源表达式”更改为 new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{yourField})

完毕。

ps:为了使用 newVehiclesList 和 usedVehiclesList 中的字段,您必须在它们自己的 subReports 中创建它们。

于 2012-07-13T18:12:05.870 回答
0

我和你有同样的问题,我使用 jasper 的标签列表解决了它,我在我的类 java 中使用了数据源,例如:parameter.put("MyList", new JRBeanCollectionDataSource(ListObjects)); 在 JRXML 中

在 Jasper 的面板中,选择标签 LIST 并在选择后拖放到您的关系中

  • 创建新数据集
  • 从连接创建新数据集... ...
  • 在数据适配器中选择新的数据适配器 - javabeans 的集合
  • 使用 JRDatasource 表达式
  • 进入参数列表并选择列出操作对象(MyList)

现在转到 jasper 的大纲和 - 数据集属性 - 编辑和查询过滤器 ... ... - javabean - 搜索你的类(我使用 eclipse,所以很容易搜索我的类) - 添加要使用的字段

于 2017-05-05T13:57:37.490 回答