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