Как использовать условное текстовое поле в 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"/>