2016-08-15 2 views
3

Ich möchte die Sichtbarkeit einer großen Anzahl von Feldern (30 oder mehr ..)Wie verlinke ich auf `dieses` Textfeld im Ausdruck wenn Ausdruck?

Ist es möglich, this in dem Feldausdruck beziehen sich ändern, oder so etwas?

Zum Beispiel habe ich viele numerische Felder wie folgt aus:

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

Kann ich printWhenExpression zu so etwas wie dies zu ändern?

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

Ist das möglich oder ist es im Prinzip unmöglich? Vielleicht gibt es Utility-Klasse?

+0

'this.field.getValue()> 0 '- Was ist' this' in Ihrem Pseudo-Code Ausdruck? Deine Frage ist unklar. –

+0

Ich meine dieses Textfeld. Das Feld, aus dem der Ausdruck aufgerufen wurde. – sanluck

+0

Ich denke, es ist unmöglich, etwas zu schreiben, wie Sie wollen, ohne den Quellcode der Engine zu ändern. –

Antwort

2

können Sie nicht Reefer auf das Textfeld ein, und es ist direkt Wert im printWhenExpression

Die einzige „ähnlich“ Methode, die Sie verwenden können, ist null Werte zurück, wenn Sie das Textfeld diese Einstellung angezeigt werden nicht mögen 2 Eigenschaften:

isRemoveLineWhenBlank, entfernen, wenn leer

mit

isBlankWhenNull, wenn null ersetzt mit leeren String

Beispiel (Textfeld wird nicht angezeigt, wenn $F{myNumeric}<0)

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

einig Logik zu Ihrer Datenquelle hinzufügen (Query/custom), um null Werte zurückzugeben, wenn <0 und Sie werden nicht t brauche den ternären Operator im Ausdruck.

Hinweis:isRemoveLineWhenBlank wird auch Auswirkungen auf die anderen Komponenten im Report haben, wenn sie Position Typ haben float

+0

Danke, Petter – sanluck

Verwandte Themen