2

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

<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列。我在我的代码中做错了什么。我没有得到。任何人都可以指出我做错了什么对我来说很紧急。

4

1 回答 1

4

您为文本字段提供的代码片段看起来是正确的,但如果您想隐藏列标题,还需要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>
于 2012-08-17T14:18:33.380 回答