在碧玉报告中隐藏该字段

时间:2012-07-29 07:43:52

标签: jasper-reports

我正在使用jasper report-4.5.0。我想根据标志值隐藏jasper中的字段。下面是我在columnHeader band中使用的代码。

<staticText>
  <reportElement x="365" y="0" width="100" height="20"/>
  <box>
    <topPen lineWidth="0.25"/>
    <leftPen lineWidth="0.25"/>
    <bottomPen lineWidth="0.25"/>
    <rightPen lineWidth="0.25"/>
  </box>
  <textElement textAlignment="Center" verticalAlignment="Middle">
    <font isBold="true"/>
  </textElement>
  <text><![CDATA[TotalCharge]]></text>
</staticText>

以及我正在使用的详细信息代码。

<textField>
  <reportElement x="365" y="0" width="100" height="20">
  <printWhenExpression><![CDATA[!$P{dataType}]]></printWhenExpression>

  </reportElement>
  <box>
    <leftPen lineWidth="0.25"/>
    <bottomPen lineWidth="0.25"/>
    <rightPen lineWidth="0.25"/>
  </box>
  <textElement textAlignment="Right" verticalAlignment="Middle">
    <font size="8"/>
  </textElement>
  <textFieldExpression><![CDATA[$F{chargeTotal}]]></textFieldExpression>
</textField>

我将jrxml中的参数声明为

<parameter name="dataType" class="java.lang.Boolean"/>

这个参数的值来自java类。如果它是假值我不想显示这个chargeTotal列。我在我的代码中做错了什么。我没有得到。任何人都可以指出我在哪里我做错了对我来说很紧张。

1 个答案:

答案 0 :(得分:3)

您为文本字段看起来正确提供的代码段,但如果您想要隐藏列标题,您还需要为其添加printWhenExpression

<staticText>
  <reportElement x="365" y="0" width="100" height="20">
      <printWhenExpression><![CDATA[$P{dataType}]]></printWhenExpression>
  </reportElement>
  <box>
    <topPen lineWidth="0.25"/>
    <leftPen lineWidth="0.25"/>
    <bottomPen lineWidth="0.25"/>
    <rightPen lineWidth="0.25"/>
  </box>
  <textElement textAlignment="Center" verticalAlignment="Middle">
    <font isBold="true"/>
  </textElement>
  <text><![CDATA[TotalCharge]]></text>
</staticText>

编辑:实际上,你有条件值向后。如果您想在dataType为真时显示列,则printWhenExpression需要如下所示:

<printWhenExpression><![CDATA[$P{dataType}]]></printWhenExpression>