【问题标题】:Pass values from main report to sub report?将值从主报告传递到子报告?
【发布时间】:2014-02-26 01:21:44
【问题描述】:

我刚开始使用 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 的内容?

提前致谢

【问题讨论】:

    标签: jasper-reports ireport


    【解决方案1】:

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

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

    1. 在您的子报告中创建一个名为 foo 的参数。
    2. 在您的主报告中创建一个子报告元素。
    3. 在子报表元素的属性中,有一个名为“参数”的属性。打开对话框并添加名称为 foo 的参数和正确的值表达式。

    当您想在子报告中使用foo 的值时,您应该使用表达式:$P{foo},如果它是主报告参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多