【问题标题】:JasperReports: Hide frame B within frame A, if one the fields inside frame B is null or is emptyJasperReports:隐藏框架 A 内的框架 B,如果框架 B 内的字段之一为空或为空
【发布时间】:2015-12-07 03:35:54
【问题描述】:

我在 Jasper 报告中遇到有关设计文档模板的问题。这就像一份简历。

我有这份文件:


标题[静态文本]

年龄[静态文本] | [某字段A]

性别 [静态文本] | [某字段B]

位置 [静态文本] | [某字段C]

我的 jasper 报告的当前结构是这样的:

我有这个框架 A,它有一个垂直布局。 模板中的每一行(年龄、性别、位置)对应于我创建的框架 1、2 和 3。

假设第 1 帧具有水平布局,其内容为“Age [静态文本]”和“[some field A]”。适用于第 2 帧和第 3 帧。

第 1 帧的位置类型为相对于顶部的固定,而第 2 帧和第 3 帧为浮动。

如果 [some field] B 为空或为空,我希望隐藏行性别并向上移动。我该怎么做?

我尝试过在空白时删除行,但它只能在一个包含多个字段的框架内工作。基本上,如果 [some field A] 为空或为空,我希望隐藏第 1 帧并向上移动第 2 帧和第 3 帧。

希望尽快回复。

【问题讨论】:

    标签: jasper-reports subreport


    【解决方案1】:

    为了达到你想要的结果集:

    1. reportElementframe内的positionType="Float"(需要在其他元素的基础上移动

    2. isRemoveLineWhenBlank="true",根据printWhenExpression

    3. ,如果它不可见,则删除
    4. printWhenExpression es 中包含对all 框架内字段的检查。 new Boolean($F{field1}==null || $F{field2}==null || $F{field3}==null)

    例子

    <frame>
       <reportElement positionType="Float" x="13" y="12" width="287" height="35" isRemoveLineWhenBlank="true" uuid="ee6707a4-bcb4-402b-95c0-6f4613747d2f">
          <printWhenExpression><![CDATA[new Boolean($F{field1}==null || $F{field2}==null || $F{field3}==null)]]></printWhenExpression>
           .. your textFields ...
       </reportElement>
    </frame> 
    

    注意:为了与 jasper 报告 3 和 jdk 1.4 兼容,我使用了 new Boolean(...) 这在 jasper 报告 5,6 中不是必需的

    【讨论】:

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