Как использовать условное текстовое поле в JasperReports?
Я хотел бы иметь пару текстовых полей в зависимости от значения. И"y" -значение должно быть отрегулировано в зависимости от пустого пространства.
, если значение "0"
Я хотел бы скрыть текстовое поле.
т. е. Я хотел бы скрыть staticText
и textField
если параметр red
равна "0"
и переместите синие значения вверх, в jrxml-коде ниже:
<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>
пример вывода:
//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
в эти текстовые поля будут в конце моего отчета. Как я могу это сделать?
3 ответов
<reportElement ...>
<printWhenExpression><![CDATA[$P{red} == 0]]></printWhenExpression>
</reportElement>
вы можете использовать iReport для изменения этого с приятным интерфейсом.
таким образом, нет, я не уверен, что это возможно.
есть опция под названием Remove Link When Blank
, но он работает только если вы хотите удалить всю строку. Здесь вы хотите удалить одну строку в определенном столбце.
В этом случае я бы рекомендовал использовать crosstab
или функция CrossTables.
дайте группе столбцов значение X. (предположим, что X-номер столбца) И дайте группе строк значение поля цвета, отсюда вы можете изменить метку динамически, что-то вроде этого:
$F{color}==null?"": ($F{color}.equals("RED")?"Red Items":"Blue Items")
вы можете использовать такой
Declare RED as [class="java.lang.Number"]
во время печати
$P{red}.intValue() == 0 ? null : $P{red}.intValue()
и включить пустой, когда опция null поля с помощью
textField isBlankWhenNull="true">
<reportElement x="100" y="30" width="100" height="30" isRemoveLineWhenBlank="true"/>