将<object>列为JRBeanCollectionDataSource到子报表</object>

时间:2010-04-29 07:34:42

标签: jasper-reports

我将List作为JRBeanCollectionDataSource传递给子报表。此处对象的类型为 A B 。对象类型 A 有两个属性: name address ,对象类型 B 包含 location 属性。

如果对象的类型为 A ,则必须显示 name address 。如果类型为 B ,则必须在子报告中显示 location

我必须在子报表中访问一种Object,意思是哪种类型( A B )? 我已经尝试了很多,但没有找到任何解决方案。

任何人都可以帮助我。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

您有很多选择:

首先:在两个对象中放置一个标志字段,表示此对象A或对象B. 然后在Subreport Expression中使用这样的三元语句:

objectType=="ObjectA"?"subreportA.jasper":"subreportB.jasper"

第二:将子报告名称作为对象本身内的字段传递 然后在Subreport Expression中使用如下字段:

$F{subReportName}

第三:制作两个子报表,每个子报表都由自己的类型填充。如果要显示“Subreport A”,则填充ObjectA并将ObjectB列表保留为null。在Jasper中,如果填充列表为NULL,则不会呈现子报表。