adi*_*dis 31 datasource report jasper-reports subreport ireport
我正在使用JasperReports并填写JRDataSource其他报告.现在,我想将main传递REPORT_DATA_SOURCE给子报表.我怎样才能做到这一点?
据我所知,它REPORT_DATA_SOURCE是一个消耗品,所以它只能使用一次,对吗?我可以复制此数据源并传递它吗?
顺便说一句:我使用iReport来创建布局.
Ale*_*x K 37
您可以通过内置参数传递数据源REPORT_DATA_SOURCE.
这个例子:
<subreport>
<reportElement x="261" y="25" width="200" height="100"/>
<dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "subreport.jasper"]]></subreportExpression>
</subreport>
Run Code Online (Sandbox Code Playgroud)
您可以根据变量,参数或字段创建新的数据源实例.
例子:
<variable name="HeadingsCollection" class="java.util.Collection" calculation="System">
<initialValueExpression><![CDATA[new java.util.ArrayList()]]></initialValueExpression>
</variable>
...
<subreport>
<reportElement x="0" y="0" width="515" height="20"/>
<subreportParameter name="ReportTitle">
<subreportParameterExpression><![CDATA[$P{ReportTitle}]]></subreportParameterExpression>
</subreportParameter>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($V{HeadingsCollection})]]></dataSourceExpression>
<subreportExpression class="java.lang.String"><![CDATA["HeadingsReport.jasper"]]></subreportExpression>
</subreport>
Run Code Online (Sandbox Code Playgroud)
另一个样本:
<field name="cast" class="java.util.Collection"/>
...
<subreport>
<reportElement positionType="Float" x="15" y="25" width="245" height="20" isRemoveLineWhenBlank="true" backcolor="#99CCFF"/>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{cast})]]></dataSourceExpression>
<subreportExpression class="java.lang.String"><![CDATA["JRMDbCastSubreport.jasper"]]></subreportExpression>
</subreport>
Run Code Online (Sandbox Code Playgroud)
或者您可以通过参数传递数据源:
<parameter name="SubreportDataSource" class="net.sf.jasperreports.engine.JRDataSource"/>
...
<subreport>
<reportElement positionType="Float" x="15" y="25" width="245" height="20" isRemoveLineWhenBlank="true"/>
<dataSourceExpression>$P{SubreportDataSource}</dataSourceExpression>
<subreportExpression class="java.lang.String"><![CDATA["Subreport.jasper"]]></subreportExpression>
</subreport>
Run Code Online (Sandbox Code Playgroud)
注意: 使用相同的(有主报告)数据源的报表可能会导致失去第一行的效应在报表.你可以阅读为什么我的子报告中缺少第一条记录?发布以了解如何避免此问题.