Reputation: 129075
I would like to have a pair of TextFields depending on a value. And the "y"-value should be adjusted depending on the empty space.
When the value is "0"
I would like to hide the TextField.
I.e. I would like to hide the staticText
and the textField
if the parameter red
is equal to "0"
and have the blue values moved up, in the jrxml-code below:
<staticText>
<reportElement x="100" y="30" width="100" height="30"/>
<text><![CDATA[Red items:]]></text>
</staticText>
<textField>
<reportElement x="200" y="30" width="40" height="30"/>
<textFieldExpression>
<![CDATA[$P{red}]]>
</textFieldExpression>
</textField>
<staticText>
<reportElement x="100" y="60" width="100" height="30"/>
<text><![CDATA[Blue items:]]></text>
</staticText>
<textField>
<reportElement x="200" y="60" width="40" height="30"/>
<textFieldExpression>
<![CDATA[$P{blue}]]>
</textFieldExpression>
</textField>
Example of output:
//if blue = 3 and red = 2 if blue = 3 and red = 0 if blue = 0 and red = 2
Red items: 2 Blue items: 3 Red items: 2
Blue items: 3
These TextFields will be placed at the end of my report. How can I do this?
Upvotes: 11
Views: 39986
Reputation: 750
you can use like this
Declare RED as [class="java.lang.Number"]
while printing
$P{red}.intValue() == 0 ? null : $P{red}.intValue()
and enable Blank when null option of the field using
textField isBlankWhenNull="true">
<reportElement x="100" y="30" width="100" height="30" isRemoveLineWhenBlank="true"/>
Upvotes: 0
Reputation: 597372
<reportElement ...>
<printWhenExpression><![CDATA[$P{red} == 0]]></printWhenExpression>
</reportElement>
You can use iReport to modify this with a pleasant UI.
Upvotes: 15
Reputation: 9690
In this way, no, I'm not sure it's possible.
There is an option called Remove Link When Blank
, but it only works if you want to remove the whole line. Here you want to remove one line in specific column.
In this case I would recommend using crosstab
or CrossTables feature.
Give the Column Group the value of X. (supposing X is the column number) And give the Row Group the value of the color field, from here you can change the label dynamically, something like this:
$F{color}==null?"": ($F{color}.equals("RED")?"Red Items":"Blue Items")
Upvotes: 2