表达式时如何链接到'this`文本字段?

时间:2016-08-15 04:51:20

标签: jasper-reports

我想更改大量字段的可见性(30或更多......)

是否可以在字段表达式中引用this,或类似的东西?

例如,我有很多这样的数字字段:

<textField pattern="#,##0.00#">
    <reportElement x="329" y="4" width="49" height="18">
        <printWhenExpression><![CDATA[$F{myNumeric}>0]]></printWhenExpression>
    </reportElement>
    <textElement textAlignment="Right">
        <font fontName="DejaVu Serif"/>
    </textElement>
    <textFieldExpression><![CDATA[$F{myNumeric}]]></textFieldExpression>
</textField>

我可以将printWhenExpression更改为这样的内容吗?

this.field.getValue()>0 //field is the textField

这是可能的还是原则上不可能?也许有实用类?

1 个答案:

答案 0 :(得分:2)

您可以直接在printWhenExpression

中转到textField及其值

唯一&#34;类似&#34;您可以使用的方法是,当您不想显示textField设置这两个属性时返回null值:

  

isRemoveLineWhenBlank ,如果为空则删除

  

isBlankWhenNull ,如果null替换为空字符串

示例(如果$F{myNumeric}<0

,则下面的textField不会显示

<textField isBlankWhenNull="true" pattern="#,##0.00#">
    <reportElement x="329" y="4" width="49" height="18" isRemoveLineWhenBlank="true"/>
    <textElement textAlignment="Right">
        <font fontName="DejaVu Serif"/>
    </textElement>
    <textFieldExpression><![CDATA[$F{myNumeric}>0?$F{myNumeric}:null]]></textFieldExpression>
</textField>

向数据源添加一些逻辑(查询/自定义),如果null返回<0值,则表达式中不需要三元运算符。

注意: isRemoveLineWhenBlank如果位置类型为float

,也会对报告中的其他组件生效