2012-06-02 6 views
4

Я создаю отчет Jasper, который имеет 5 фиксированных столбцов. Клиент запросил возможность выбора количества столбцов во время выполнения.Как динамически показывать столбцы в отчете Jasper?

Например, если он проверяет 2 столбца из отображаемого JTable, то в отчете Jasper должно быть 2 столбца, если он проверяет 4, тогда в отчете яшмы должно быть четыре столбца. Чтобы попытаться решить это, я подумываю добавить условие в отчет о яшме. Если клиент выбирает столбцы A и B, я устанавливаю это как параметр в отчете и использую его для определения того, следует ли отображать столбец.

Для этого мне нужно использовать условия в XML Jasper. Где я должен установить условия в отчете.

ответ

2

Вы можете попробовать следующее

  1. Создать HashMap и установить требуемые свойства в нем

    Map params = new HashMap(); 
    params.put("DISPLAY_COLUMN_ONE", "Y") 
    
  2. Передайте эту params карту Джаспер в методе

    JasperFillManager.fillReport

  3. В вашем JRXML создайте параметр, соответствующий каждому набору свойств в вышеприведенном HashMap:

    <parameter name="DISPLAY_COLUMN_ONE" class="java.lang.String"/>

  4. Показать столбцы на основе значения параметра

    <printWhenExpression><![CDATA[$P{DISPLAY_COLUMN_ONE}.equals("Y")]]></printWhenExpression>

+0

пожалуйста, вы можете доказать, синтаксис, например – Ali

+0

я хочу, чтобы проверить этот – Ali

+0

\t \t \t \t \t \t \t \t \t \t \t \t \t <шрифт isBold = "ложь" /> \t \t \t \t \t \t \t \t \t \t \t Ali

0

Я бы просто сделал несколько копий вашего отчета о яшме, по одному для каждого варианта числа столбцов. Это может быть много избыточности, но это очень легко, если количество возможных вариантов не слишком велико. Сообщение, которое вы вызываете, зависит от выбора пользователя.

Я не могу придумать способ изменения столбцов в отчете на основе условного.

2

вы должны пройти columnCount параметр jasper и условие проверки в каждом столбце Печать при выражении.

первый столбец печати, когда Expression является

$P{columnCount} >=1 

Вторая колонка печати, когда Expression является

$P{columnCount} >=2 

Третья колонка печати, когда Expression является

$P{columnCount} >=3 

Четвертого столбец печати, когда выражение является

$P{columnCount} >=4 

Надеется, что это поможет вам.

+0

пожалуйста доказать синтаксис для печати, когда выражения – Ali

+0

\t \t \t \t \t \t \t \t \t \t \t \t \t <шрифт isBold = "ложь" /> \t \t \t \t \t \t \t \t \t \t \t Ali

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