JasperReports:如何动态更改subreportExpression

时间:2011-01-21 00:19:15

标签: dynamic jasper-reports subreport

我想做的事情看似简单。

我有一个包含子报表元素的主报表。子报表由JRAbstractBeanDataSource填充,其中包含0-n个子报表的集合。

在主报告中,子报告的位置为:

<subreportExpression  class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + $F{subReportFileName}]]></subreportExpression>

这很好用,SUBREPORT_DIR作为参数传递给代码中的数据源。

我需要做的是,根据子报告属性选择不同的报告名称,例如:

<subreportExpression class="java.lang.String"><![CDATA[$P{SUBREPORT_DIR} + "$F{subReportFileName}"]]></subreportExpression>

也就是说,允许数据源上子报表数据集合中的每个项目指定.jasper文件名将是什么(也就是说,允许它选择要使用的子报表)。

也许有更好的方法来思考/接近这个。

2 个答案:

答案 0 :(得分:0)

只是旁注 - 当您想在问题中包含代码时,请使用合成窗口上方的代码按钮。我们看不到你的例子。如果单击合成窗口右上角的小橙色方块内的问号,则会转到Markdown编辑教程。

我有点不清楚你想要完成什么。我不确定集合中是否要包含报表中的所有子报表,并且需要一种方法来遍历目录中的名称,或者如果您希望选择子报表是动态的。我不知道在主报表中包含多个子报表的方法。如果要动态选择报表名称,为什么不将子报表名称设置为从代码传递到报表的参数。您可以根据您选择的条件来确定所需的报告名称。如果那不是你想要的,那么你的问题中的一些细节可能会有所帮助。

答案 1 :(得分:0)

我试图找到一种方法来设置报告名称,因为主报告迭代了日期源项目。相反,我只是将查询完全动态化,作为参数传递。这就是我真正需要为每个子报告更改的内容。