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が true のときに列を表示する場合は、次のprintWhenExpressionようにする必要があります。

<printWhenExpression><![CDATA[$P{dataType}]]></printWhenExpression>
于 2012-08-17T14:18:33.380 に答える