如果条件没有留空空间,如何浮动文本字段?

时间:2016-03-03 04:44:38

标签: jasper-reports

我在jasper中有一个类似于:

的报告
sub total: (text) XX (formula)
disc: (text) xx (formula)
disc2: (text) xx (formula)
total: (text) xx (formula)

折扣discdisc2的价值通常为零,如果是,我需要将其显示为:

sub total: (text) xx (formula)
total: (text) xx (formula)

我如何在Jasper ireport做什么?

report picture

目标是当磁盘I和II线为0时隐藏它,使总线浮动,而不留空位。

完整的jrxml代码:http://pastebin.com/Wuu82vJT

1 个答案:

答案 0 :(得分:2)

隐藏和删除 reportElement值,请使用printWhenExpressionisRemoveLineWhenBlank="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>