JasperReports:在JRXML中迭代List

时间:2013-09-25 03:01:25

标签: jasper-reports iteration

在我的一个报告要求中,我需要显示包含自定义数据的多行。

对于自定义数据,我使用了REPORT_SCRIPTLET功能,该功能使用数据对象填充List。直到这一点,一切正常。

如何将上面填充的List传递给JRXML,并迭代行以在报告中显示它们?

我搜索并发现了一些帖子,根据它们,我应该使用SubReport和JR数据源。

请帮助实现目标。我无法找到上述问题的具体样本或语法。

提前致谢!!

此致

拉​​瓦特


感谢您提供该片段。

显然,我也使用相同的语法,但我对“listNameWhatEverYouWantToPass”感到困惑。

在我的例子中,“listNameWhatEverYouWantToPass”是一个对象列表,表示Class TestObject有4个带有setter和getter方法的字段。

在JRXML中定义为

<variable name="listNameWhatEverYouWantToPass" class="java.util.List" calculation="System"/>
“listNameWhatEverYouWantToPass”将由afterGroupInit函数内的Scriptlet类设置为

List<TestObject> testList = new List<TestObject> () ; // Is it correct?? 

// add TestObjects to the list 

this.setVariable("listNameWhatEverYouWantToPass",testList);

如何从subreport.jasper中的List中的单个对象访问数据?

谢谢,

拉​​瓦特

1 个答案:

答案 0 :(得分:0)

这是主报告中添加子报告的代码。

<subreport>
                <reportElement uuid="cb31b535-0484-4a63-a1af-b6737d937474" positionType="Float" x="0" y="60" width="515" height="15"/>
                <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource(listNameWhatEverYouWantToPass)]]></dataSourceExpression>
                <subreportExpression><![CDATA["/path/to/subreport.jasper"]]></subreportExpression>
            </subreport>
希望它会对你有所帮助。