Jasper reports 如果条件不留空格,如何浮动文本字段?

Jasper reports 如果条件不留空格,如何浮动文本字段?,jasper-reports,Jasper Reports,我有一份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怎么办 目标

我有一份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怎么办

目标是在值为0时隐藏磁盘I和II行,使总行向上浮动,而不留下空白


完成jrxml代码:

要隐藏和删除值上的
reportElement
,请在需要删除的所有文本字段上使用
printWhenExpression
isRemoveLineWhenBlank=“true”

示例

<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>
<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>
<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>
如果不保留空白,则如果文本字段自然上浮,则下面会有更多空间,并且您无法简单地设置带的动态高度

实现动态高度的最简单方法是将所有文本(在lastPageFooter中)移动到子报表(例如,通过参数传递所需的数据)。使用最小高度包含此子报表,并设置其
positionType=“FixRelativeToBottom”

示例

<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>
<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>
<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>


您的问题在哪里?你能发布你的jrxml文件吗?@Jackie可能是&。相同的idea@Jackie这个问题还有待解决吗?您仍然有问题吗?
isRemoveLineWhenBlank
可以处理框架元素吗?如果我有一个框架,这是没有打印一些时间,我想另一个框架下面浮动时,前一个是没有打印。。。我该怎么做?@lealcelderio是的,它应该工作,检查它,然后在下一次显示时打印一个
(因此你不需要打印它)+确保应该浮动的元素有浮动作为位置类型,如果它不工作,用a传递一个新问题。你完全正确。我做了一些,效果不错。似乎我在一个更大的报告(包含很多组件)中遇到了一些问题,因为它没有像我预期的那样工作。我能做些什么来克服这个问题?提前感谢您宝贵的时间。