2016-07-01 2 views
2

Я немного застрял в такой простой проблеме. Я использую DynamicReports, и я хочу скрыть целую строку, если значение столбца равно null. Как я знаю, DynamicReports основан на JasperReports, и, возможно, это можно сделать, проверив опцию TextField «Удалить строку при пустой». Как я могу это сделать в Dynamic?DynamicReports удаляет строку, если столбец равен нулю

компоненты, которые я использую:

TextColumnBuilder, ColumnGroupBuilder, JasperReportBuilder 

Я хочу, чтобы скрыть всю строку, если какой-либо из моих TextColumns будет нулевым.

ответ

1

ОК, после некоторых мыслей, я обнаружил, что эта проблема может быть решена по-другому.

мы будем использовать столбец, группу и т.д. свойство setPrintWhenExpression(DRIExpression expression)

1. Создать класс, который будет обрабатывать, печатать или не печатать строку. Динамический имеет абстрактный класс для этого:

public class ShowExpressionDynamicReports extends AbstractSimpleExpression<Boolean> { 

    private String fieldName; 

    public ShowExpressionDynamicReports(String fieldName) { 
     this.fieldName = fieldName; 
    } 

    @Override 
    public Boolean evaluate(net.sf.dynamicreports.report.definition.ReportParameters reportParameters) { 
     return reportParameters.getValue(fieldName) != null; 
     } 
    } 

Вы должны расширить AbstractSimpleExpression для того, чтобы передать его в качестве параметра для методов, которые перечислены ниже.

Итак, значение столбца печатается, если evaluate(ReportParameters rp)возвращает true.

Я также добавил поле fieldName, которое позволяет мне печатать (или нет) колонку из-за other's состояние столбца.

2. Добавить объект в столбце

:

setPrintWhenExpression(DRIExpression expression)

Группа:

.setPrintSubtotalsWhenExpression(DRIExpression expression)

или

setFooterPrintWhenExpression(DRIExpression expression)

или

setHeaderPrintWhenExpression(DRIExpression expression)

Зависит от того, что вы хотите скрыть.

Пример:

У нас есть 2 колонки в нашем отчете: Продукт и столбцы ProductCount. Я хотел бы скрыть столбец Product, если ProductCount имеет значение null (у нас нет информации для этого продукта).

Таким образом, чтобы сделать это я добавлю свойство PrintWhenExpression в колонке продукта

TextColumnBuilder<String> productColumn = col.column("Product", "Product", type.stringType()) 
.setPrintWhenExpression(new ShowExpressionDynamicReports("ProductCount")); 
Смежные вопросы