将值从主报告传递到子报告?

时间:2011-02-22 05:28:21

标签: 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("/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的内容

提前致谢

1 个答案:

答案 0 :(得分:9)

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

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

  1. 在子报告中创建名称为foo
  2. 的参数
  3. 在主报告中创建子报告元素。
  4. 在子报表元素的属性中,有一个名为“参数”的属性。打开对话框并添加名称为foo的参数和正确的值表达式。
  5. 如果要在子报告中使用foo的值,则应使用以下表达式:$P{foo}如果它是主报告参数。