我需要填充几个子报表不同对象的列表。 基本上可以说,我有以下几点:
子报表上使用的车辆
子报表新车
我创建了一个车辆的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子报表?
谢谢!
选择子报表,你可以设置属性“连接类型”为“使用数据源表达”和属性“数据源表达”你设置这里面:
new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{yourFieldHere})
当你的“yourFieldHere”是一个列表(不要忘记设置“字段类别”中的字段属性,作为一个java.util.List以及)
好吧,那么你需要创建一个领域类为java.util.List的,每一个列表(newVehiclesList和usedVehiclesList)两个字段。
把你的两个子报表,无论你想,然后点击每一个执行以下步骤:
更改“连接类型”为“使用数据源表达式”,然后将“数据源表达”新net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($ F {} yourField)
完成。
PS:为了使用newVehiclesList和usedVehiclesList中的字段,你必须创建它们自己的子报表内。
我是跟你同样的问题,我解决它使用碧玉的标签列表,我用数据源在我的java类,例如:parameter.put(“MYLIST”,新JRBeanCollectionDataSource(ListObjects)); 在JRXML
在碧玉palete,选择标签列表和阻力,并在您relatory下降后选择
- 创建新的数据集
- 从连接创建新的数据集......
- 在数据适配器选择新的数据适配器 - 的JavaBeans集合
- 使用的JRDataSource表达
- 进去的参数LIS,并选择你列出运算对象(MYLIST)
现在去碧玉和轮廓 - 数据集属性 - 编辑和查询过滤器...... - 的JavaBean - 搜索你的类(我使用Eclipse,所以很容易搜索我的课) - 添加字段使用