我将List作为JRBeanCollectionDataSource传递给子报表。此处对象的类型为 A
和 B
。对象类型 A
有两个属性: name
和 address
,对象类型 B
包含 location
属性。
如果对象的类型为 A
,则必须显示 name
和 address
。如果类型为 B
,则必须在子报告中显示 location
。
我必须在子报表中访问一种Object,意思是哪种类型( A
或 B
)?
我已经尝试了很多,但没有找到任何解决方案。
任何人都可以帮助我。 提前谢谢。
答案 0 :(得分:1)
您有很多选择:
首先:在两个对象中放置一个标志字段,表示此对象A或对象B.
然后在Subreport Expression
中使用这样的三元语句:
objectType=="ObjectA"?"subreportA.jasper":"subreportB.jasper"
第二:将子报告名称作为对象本身内的字段传递
然后在Subreport Expression
中使用如下字段:
$F{subReportName}
第三:制作两个子报表,每个子报表都由自己的类型填充。如果要显示“Subreport A”,则填充ObjectA并将ObjectB列表保留为null。在Jasper中,如果填充列表为NULL
,则不会呈现子报表。