Jasper reports 是否将值从主报表传递到子报表?

Jasper reports 是否将值从主报表传递到子报表?,jasper-reports,ireport,Jasper Reports,Ireport,我刚开始使用iReport,并得到了对现有报告进行一些更改的任务 目前有一份主要报告,其中包括a和B部分(联系方式和一些其他信息)。有一个子报告C,然后是子报告D。我的任务是为D中的每个项目复制a和B。如果报告有许多D部分,我希望每个部分都有a和B 所有数据都在同一个XML文档中,为了获得A和B部分的数据,我只需要 ((net.sf.jasperreports.engine.data.JRXmlDataSource)$F{REPORT_DATA_SOURCE}).dataSource("/Hea

我刚开始使用iReport,并得到了对现有报告进行一些更改的任务

目前有一份主要报告,其中包括a和B部分(联系方式和一些其他信息)。有一个子报告C,然后是子报告D。我的任务是为D中的每个项目复制a和B。如果报告有许多D部分,我希望每个部分都有a和B

所有数据都在同一个XML文档中,为了获得A和B部分的数据,我只需要

((net.sf.jasperreports.engine.data.JRXmlDataSource)$F{REPORT_DATA_SOURCE}).dataSource("/Header/")
对于带有D部分的子报告

((net.sf.jasperreports.engine.data.JRXmlDataSource)$P{REPORT_DATA_SOURCE}).subDataSource("/Header/ProductHeader/Member")
如果我将一个字段从显示a节数据的文档结构拖到D节,并检查它所表示的表达式 $F{ContactNumber}但在D中显示Null,即使它在a部分中显示值

我需要如何修改数据源以在D中显示A和B的内容


提前感谢

您需要将参数传递到子报表。除非明确定义合同,否则子报告不会共享主报告中的任何数据。它更像是一个方法调用,然后是主报告的延续

如果要在子报告的主报告中显示名为
foo
的字段,则需要执行以下操作:

  • 在子报表中创建名为
    foo
    的参数
  • 在主报表中创建子报表元素
  • 在子报表元素的属性中,有一个名为“Parameters”的属性。打开对话框,添加名为
    foo
    的参数和正确的值表达式
  • 如果要在子报表中使用
    foo
    的值,则应使用表达式:
    $p{foo}
    (如果它是主报表参数)