我在jasper中有一个类似于:
的报告sub total: (text) XX (formula)
disc: (text) xx (formula)
disc2: (text) xx (formula)
total: (text) xx (formula)
折扣disc
和disc2
的价值通常为零,如果是,我需要将其显示为:
sub total: (text) xx (formula)
total: (text) xx (formula)
我如何在Jasper ireport做什么?
目标是当磁盘I和II线为0时隐藏它,使总线浮动,而不留空位。
完整的jrxml代码:http://pastebin.com/Wuu82vJT
答案 0 :(得分:2)
要隐藏和删除 reportElement
值,请使用printWhenExpression
和isRemoveLineWhenBlank="true"
(在需要删除的所有textField上)
示例强>
<textField pattern="#,##0;-#,##0" isBlankWhenNull="false">
<reportElement positionType="Float" x="453" y="22" width="97" height="16" isRemoveLineWhenBlank="true" uuid="e3279093-5beb-490a-9954-aad866ed208c">
<printWhenExpression><![CDATA[$V{vdisc_1}!=null&&$V{vdisc_1}.equals(0)]]></printWhenExpression>
</reportElement>
<textElement textAlignment="Right" verticalAlignment="Top">
<font size="9"/>
</textElement>
<textFieldExpression><![CDATA[$V{vdisc_1}]]></textFieldExpression>
</textField>
要设置reportElement
(总行)浮动,请使用positionType="Float"
属性
示例强>
<staticText>
<reportElement positionType="Float" x="372" y="56" width="80" height="16" uuid="6ba40473-9efb-42e3-8b49-0d2c32ba84bd"/>
<textElement>
<font size="9"/>
</textElement>
<text><![CDATA[Total (Rp)]]></text>
</staticText>
不离开空格,如果textField自然浮动,则下方有更多空间,您不能简单地设置乐队的动态高度。
实现动态高度的最简单方法是将所有文本(在lastPageFooter中)移动到子报表(例如,通过参数传递所需的数据)。包含此子报表的最小高度并设置其positionType="FixRelativeToBottom"
示例强>
<subreport>
<reportElement positionType="FixRelativeToBottom" x="0" y="87" width="555" height="41" uuid="656195bf-74bc-4aa0-9f0a-9c3a00cc6fb2"/>
<subreportParameter name="vdisc_1">
<subreportParameterExpression><![CDATA[$V{vdisc_1}]]></subreportParameterExpression>
</subreportParameter>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource(1)]]></dataSourceExpression>
<subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "example_subreport.jasper"]]></subreportExpression>
</subreport>