我正在尝试为新车和二手车创建一份包含2个子报表的报表。
我根据JavaBeans规范定义了一个车辆bean。我正在考虑使用参数映射通过主报告将此数据传递到子报告,如Passing JRBeancollection datasourse to master report and subreport post所述。
到目前为止我采取的步骤如下:
第一步 - 将集合作为参数传递
Map<String, Object> jasperParameter = new HashMap<String, Object>();
jasperParameter.put("new_Vehicles", createNewVehicles()); //returns a collection of vehicles.
第二步 - 在主报告中创建参数new_Vehicles
并将其设置为Collection
数据类型
第三步 - 为子报告创建数据源表达式为
net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{new_Vehicles})
第四步 - 创建一个字段(只是为了让我在添加更多字段之前使其工作),vehicleId
在子报告中。
我遇到的问题/问题,并希望得到任何帮助:
a)当我编译它给我一个错误消息,上面提到的数据源无法解析为一个类型。我做错了什么?
好的,所以我想我可能已经超越了异常,在数据表达式new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{new_Vehicles})
前添加了“new”。
但是,现在如果我将两个新车辆添加到列表中,则会在两个页面中打印,基本上每个元素在列表中打印一页。我的列标题位于 列标题 区域,我的字段位于 详细信息 区域。
有关如何阻止它将列表中的每个元素放在不同页面上的任何建议吗?
答案 0 :(得分:3)
删除未使用的波段和/或将细节波段调整到与场地相同的高度。