1 回答

TA贡献1789条经验 获得超10个赞
首先定义子报表的数据源是主报表中的字段 (main.jrxml)
<field name="claimHistoryDataSource" class="java.util.ArrayList">
<fieldDescription><![CDATA[claimHistoryList}]]></fieldDescription>
</field>
<field name="claimDetailDataSource" class="java.util.ArrayList">
<fieldDescription><![CDATA[claimDetailList}]]></fieldDescription>
</field>
claimHistoryList并且是在 java 类中定义的 ArrayList,用作主报表的数据源。claimDetailList
然后将其传递给带有dataSourceExpression
<subreport>
<reportElement positionType="Float" x="18" y="1" width="522" height="65" uuid="f3063ed3-775f-47df-8306-a939aecc9d89"/>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{claimHistoryDataSource})]]></dataSourceExpression>
<subreportExpression><![CDATA["ClaimHistory.jasper"]]></subreportExpression>
</subreport>
<subreport>
<reportElement positionType="Float" x="18" y="1" width="522" height="65" uuid="f3063ed3-775f-47df-8306-a939aecc9d89"/>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{claimDetailDataSource})]]></dataSourceExpression>
<subreportExpression><![CDATA["ClaimDetail.jasper"]]></subreportExpression>
</subreport>
添加回答
举报