Динамическое моделирование заголовков строк в кросс-таблице JasperReports - PullRequest
1 голос
/ 07 февраля 2012

Я пытаюсь создать перекрестный отчет с использованием JasperReports. Столбец содержит периоды времени, а строка содержит различные группы условий. Теперь мне нужно изменить стили заголовков строк в зависимости от уровня. Например, в сетке, показанной ниже, Интернет и электронная почта должны быть выделены жирным шрифтом, в то время как другие заголовки строк остаются как есть.

enter image description here

Теперь у меня есть поле в компоненте, которое позволяет мне решить, должен ли я сделать текст жирным или нет, поэтому я попытался использовать это в условном стиле, как показано ниже

<style name="rowStyle" hAlign="Center">
   <conditionalStyle>
      <conditionExpression><![CDATA[$V{level}.intValue() != 0]]></conditionExpression>
         <style isBold="true" hAlign="Left"/>
   </conditionalStyle>
   <conditionalStyle>
      <conditionExpression><![CDATA[$V{level}.intValue() == 0]]></conditionExpression>
         <style isBold="false" hAlign="Right"/>
   </conditionalStyle>
</style>

и у меня есть поле и выражение меры, соответствующее этому

<field name="level" class="java.lang.Integer"/>

<measure name="level" class="java.lang.Integer">
   <measureExpression><![CDATA[$F{level}]]></measureExpression>
</measure>

Однако этот стиль ничего не делает при использовании внутри crosstabRowHeader, он действует только внутри crosstabCell. Так что мои вопросы

  • В любом случае я могу использовать условный стиль внутри crosstabRowHeader?
  • Более конкретно, могу ли я получить доступ к любому свойству bean-компонента в crosstabRowHeader?

1 Ответ

0 голосов
/ 20 марта 2012

Удалось выяснить это в конце концов.Таким образом, проблема заключается в том, чтобы иметь возможность доступа к свойству из bean-компонента в кросс-заголовке (или любых других заголовках кросс-таблицы).Для этого сначала создайте поле, соответствующее компоненту, следующим образом -

<field name="voBean" class="com.jasper.reports.voBean"> <fieldDescription>_THIS</fieldDescription> </field>

Затем в заголовках укажите этот компонент в качестве класса сегмента.

<rowGroup name="voBean" width="200"> <bucket class="com.jasper.reports.voBean"> <bucketExpression><![CDATA[$F{voBean}]]></bucketExpression> </bucket>

Теперь вы можете получить доступ к любому свойству объекта EJB, как показано ниже:

<textFieldExpression><![CDATA[$V{voBean}.getRowName()]]></textFieldExpression>

Надеюсь, что это поможет кому-либо еще ста же проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...