JasperReports:如果框架 B 中的一个字段为空或为空,则将框架 B 隐藏在框架 A 中

JasperReports: Hide frame B within frame A, if one the fields inside frame B is null or is empty

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

我有这个文件:


标题[静态文本]

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

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

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

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

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

例如,第 1 帧具有水平布局,其中 'Age [static text]' 和“[某些字段 A]”作为其内容。适用于第 2 帧和第 3 帧。

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

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

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

希望尽快回复。

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

  1. positionType="Float" on the reportElement inside the frame (需要在其他的基础上move元素。

  2. isRemoveLineWhenBlank="true",如果根据 printWhenExpression

  3. 不可见,则 删除
  4. printWhenExpression es 中包含对 所有 帧内字段的检查。 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 中没有必要