Jasper reports 如何在主报表(jasper报表)中动态排序子报表

Jasper reports 如何在主报表(jasper报表)中动态排序子报表,jasper-reports,Jasper Reports,假设一个主报表可以有9个子报表。 然后用户可以拥有UI,用户可以根据自己的选择从中订购子报表。例如,哪个子报表应该首先显示,哪个子报表是下一个,等等。 那么,我该如何实现这一点呢?按照以下步骤实现您的要求 创建9个参数,如reportpath1、reportpath2、reportpath3、…reportpath9 提示用户输入报告的顺序。根据顺序将受尊重的报告路径传递给每个参数 也就是说,如果选择子报表9作为第一个报表,则将该子报表9的路径传递为reportpath1;如果选择子报表8作为第

假设一个主报表可以有9个子报表。 然后用户可以拥有UI,用户可以根据自己的选择从中订购子报表。例如,哪个子报表应该首先显示,哪个子报表是下一个,等等。
那么,我该如何实现这一点呢?

按照以下步骤实现您的要求

创建9个参数,如reportpath1、reportpath2、reportpath3、…reportpath9

提示用户输入报告的顺序。根据顺序将受尊重的报告路径传递给每个参数

也就是说,如果选择子报表9作为第一个报表,则将该子报表9的路径传递为reportpath1;如果选择子报表8作为第二个报表,则将该报表的路径传递为reportpath2,依此类推

例如,如果子报表9的路径为report/samples/subreports/subreport9,则将参数reportpath1值设置为report/samples/subreports/subreport9。如果子报表8的路径为report/samples/subreports/subreport8,则将参数reportpath2的值设置为report/samples/subreports/subreport8,依此类推

在报表设计中,创建9个子报表,而不是硬编码每个报表的路径,在子报表表达式中传递参数,如下所示 对于子报告1

    <subreportExpression><![CDATA[$P{ReportPath1}]]></subreportExpression>
对于子报告2

    <subreportExpression><![CDATA[$P{ReportPath2}]]></subreportExpression>
等等

希望这能解决你的问题

从子报表获取变量的答案

右键单击父报表中的子报表。 转到属性 在“子报表会话”下,单击“返回值” 添加subreport变量并将其映射到parentreport变量。 然后在父报表中使用parentreport变量。
希望这能解决您的另一个问题。

谢谢您的及时回复。但是,我对所有9个报表都有不同的设计。这意味着我有主报表。它只有9个详细栏,用于9个不同的子报表。每个栏有1个从1到9的子报表。在每个子报表中,您硬编码了报表路径,对吗?不需要硬编码,只需按照上面的步骤进行。否,我已经使用了参数来给出路径。我在主报告中添加了9个子报告。您可以发布示例jrxml吗?