JasperReports的:在列出的清单传递作为数据源(JasperReports: Passin

2019-06-26 06:30发布

我需要填充几个子报表不同对象的列表。 基本上可以说,我有以下几点:
子报表上使用的车辆
子报表新车

我创建了一个车辆的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}有什么办法,我可以通过newVehiclesList从detailRows子报表?

谢谢!

Answer 1:

选择子报表,你可以设置属性“连接类型”为“使用数据源表达”和属性“数据源表达”你设置这里面:

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

当你的“yourFieldHere”是一个列表(不要忘记设置“字段类别”中的字段属性,作为一个java.util.List以及)



Answer 2:

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

把你的两个子报表,无论你想,然后点击每一个执行以下步骤:

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

完成。

PS:为了使用newVehiclesList和usedVehiclesList中的字段,你必须创建它们自己的子报表内。



Answer 3:

我是跟你同样的问题,我解决它使用碧玉的标签列表,我用数据源在我的java类,例如:parameter.put(“MYLIST”,新JRBeanCollectionDataSource(ListObjects)); 在JRXML

在碧玉palete,选择标签列表和阻力,并在您relatory下降后选择

  • 创建新的数据集
  • 从连接创建新的数据集......
  • 在数据适配器选择新的数据适配器 - 的JavaBeans集合
  • 使用的JRDataSource表达
  • 进去的参数LIS,并选择你列出运算对象(MYLIST)

现在去碧玉和轮廓 - 数据集属性 - 编辑和查询过滤器...... - 的JavaBean - 搜索你的类(我使用Eclipse,所以很容易搜索我的课) - 添加字段使用



文章来源: JasperReports: Passing in a list of lists as a datasource