2013-08-28 6 views
0

Я новичок в JasperReports и мне нужна помощь.Получить текст заголовка колонки в печатиWhenExpression

У нас есть сценарий, в котором заголовок столбца и данные извлекаются динамически. Это похоже на общий компонент, который будет генерировать отчет независимо от количества столбцов и заголовков столбцов и данных (которые являются динамическими). Данные (столбцы и данные) динамически устанавливаются в отчет в Java с API JasperReports API, и у нас есть только шаблон, как показано ниже в файле jrxml.

<jr:column width="92"> 
    <jr:columnHeader style="table 2_CH" height="25" rowSpan="1"> 
     <staticText> 
      <reportElement x="0" y="0" width="92" height="25" backcolor="#99CCFF"/> 
      <textElement textAlignment="Center" verticalAlignment="Middle"> 
       <font fontName="Arial" size="9" isBold="true"/> 
      </textElement> 
      <text><![CDATA[DYNAMIC_DATA_FIELD]]></text> 
     </staticText> 
    </jr:columnHeader> 
    <jr:detailCell style="table 2_CH" height="25" rowSpan="1"> 
     <textField isBlankWhenNull="true"> 
      <reportElement x="0" y="0" width="92" height="25"/> 
      <textElement textAlignment="Right" verticalAlignment="Middle"> 
       <font fontName="Arial" size="8"/> 
      </textElement> 
      <textFieldExpression><![CDATA[$F{DYNAMIC_DATA_FIELD}]]></textFieldExpression> 
     </textField> 
    </jr:detailCell> 
</jr:column> 

Этот шаблон будет выбрано в сторонуJava и значение для DYNAMIC_DATA_FIELD в шаблоне будет заменен с текстом заголовка столбца и индексом данных в зависимости в результате запроса.

Теперь мне нужно скрыть и показать несколько столбцов на основе выбора переключателя в пользовательском интерфейсе. Для этого я планирую использовать printWhenExpression, но не знаю, как получить текст заголовка столбца. Я видел что-то вроде $P{JASPER_REPORT}.getColumnHeader(), но не знаю, как его использовать. Так вот условие, которое я пытаюсь использовать (ниже только шаблон, и я не уверен в правильном синтаксисе) ...

if (radioSelection == something) { 
    if (columnHeaderText.endsWith('something') { 
     return true; 
    } else { 
     return false; 
    } 
} 

Пожалуйста, обратите внимание, что я не буду иметь возможность использовать этот условие в коде Java как его общий компонент, и все отчеты используют это. Так как каждый отчет имеет файл jrxml в нашем сценарии, и это происходит только для конкретного отчета, я пытаюсь поместить это условие в файл jquery .

ответ

0

Можете ли вы создать массив boolean [] со значениями для каждого столбца (отображение или нет)? В этом случае вы можете передать свой массив в report.jrxml в качестве параметра (например, $ P {displayCols}).

В накрытым «Колонка печати, когда» выражение в виде $ P {displayCols [number_of_column]} Где номер столбца цифр для бетона (1 или 2 или 3 ...)

Но в этом случае вы должны изменить «поколение» jrxml? И текст заголовка столбца в этом случае не нужен.

Смежные вопросы