有没有一种方法可以像处理主要报告一样填充子报告? (JasperReports)

时间:2018-07-03 11:10:09

标签: java jasper-reports javabeans subreport names

是否可以像处理主报告一样填充子报告,然后将其添加到主报告中?

类似的东西:

fillReportxxx(subreport, subParams, subDataSource);
mainParams.put("subreport", subreport);
fillReportxxx(mainReport, mainParams, mainDataSource);

我在Internet上看到的所有方式都将所有dataSources和参数从主报表传递到子报表。但这对我来说真的很有帮助。

为什么?

我已经创建了主bean和子报表bean,可以用作数据源,但是它们有一些共同的字段名,因此我想我不能将它们全部传递给主报表而不会发生冲突(我其中有很多:名称和子报表)。我想如果将所有数据输入集中到主报表中,就必须创建一个统一的bean类,对吗? 我也有一些参数名称冲突(主要名称和子名称相同),但这是一个小问题(有问题吗?)。

我从JasperReports开始,我发现分别填写每个报告将是更直观的方法。另外,在文档中说:

  

由于子报表本身就是普通报表,因此它们的编译和填充就像   其他报告。这意味着他们还需要从中获取数据的数据源   当他们被填补。他们还可以依靠参数来使用其他信息   当被填充。   有两种向子报表提供参数值的方法。   您可以提供包含参数值的映射,就像填写普通报告时一样   使用数据,使用由以下方法公开的fillReportXXX()方法之一   JasperFillManager类(请参阅第19页的“填充报告模板”)

小问题

我已经看到一些代码,其中子报表bean作为参数传递,并且可以正常工作:

JRDataSource dataSourceSubReport = new JRBeanCollectionDataSource(listOfBeans);
parameters.put("SUBREPORT_DIR", subReport);
parameters.put("criteriosDS", dataSourceSubReport);

//and then fill the main normally
fillReportxxx(mainReport, parameters, mainDataSource);

这解决了我与dataSource冲突的主要问题,但是我发现它可能有点脏。 我想那一定是一种更清洁的方式。

另一种方式?

也许我错过了一种将我的不同bean和参数从主报表传递到子报表的方法,以维护名称和bean,而不会发生冲突。

0 个答案:

没有答案