Как скрыть колонку в таблице, если нет данных

07.04.2020

При создании отчета хочется сделать его максимально «дружелюбным» для потребителя. Перегруженность данными и элементами оформления ухудшает восприятие информации. Поэтому многие хотели бы избавиться от пустых колонок в таблицах, при отсутствии в них данных. Генератор отчетов FastReport.Net позволяет реализовать такой функционал. Как вы понимаете, нужно скрыть не только колонку, но и заголовок для нее. Если сокрытие колонки дело пары кликов мышью, то сокрытие заголовка задача не тривиальная.

Допустим у нас есть таблица, из которой мы хотим вывести данные в отчете. Но некоторые данные могут отсутствовать или быть равными нулю. В этом случае, мы можем использовать инструмент «Условное выделение» для сокрытия ячеек с нулевыми данными. Выбираем нужную ячейку и кликаем по иконке на панели инструментов:

 

При добавлении условия, по умолчанию создается проверка на ноль. То, что нам нужно. Мы лишь выбираем опции отображения. В нашем случае убираем флаг visible:

 

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

Чтобы проверить, что на странице в заданной колонке нет данных, мы воспользуемся итогом.

Этот итог подводится по заданной колонке и суммирует все значения в ней. Если итог равен нулю, значит в колонке нет ни одного значения больше нуля, и нужно скрыть заголовок колонки.

Итак. Добавим итог:

 

Итог поместим в бэнд «Подвал страницы»:

После этого итог можно скрыть с помощью свойства visible.

Теперь зададим логику для скрытия заголовка последней колонки. Вместо текста RUB вводим выражение:

[IIf([Total]!=0,Text14.Text = "RUB",Text14.Text = "")]

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

Выберите текстовое поле с заголовком колонки RUB. В свойствах текстового поля находим ProcessAt и изменяем на PageFinished:

 

После этого, открываем свойства отчета и устанавливаем опцию Doublepass:

 

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

Посмотрим, как работает наш отчет в условия, когда в колонке RUB все данные равны 0:

 

На каких-то страницах данные могут появиться, и тогда колонка появится:

 

Таким образом мы можем динамически отображать или скрывать колонки, в зависимости от данных.

.NET FastReport .NET FastReport
8 апреля 2025

Как настроить подключение к Apache Ignite в FastReport .NET

В этой статье мы рассмотрим, как настроить подключение к Apache Ignite в FastReport .NET. Вы узнаете, какие шаги необходимо выполнить для подключения плагина через код и дизайнер отчетов.
8 апреля 2025

Конвертер из формата Microsoft Word (.docx) в файл для FastReport .NET (.frx)

Конвертер из формата Microsoft Word (.docx) в файл для FastReport .NET (.frx): описание и инструкция по использованию инструмента.
25 марта 2025

Как объединить несколько отчетов в один из FastReport .NET

FastReport .NET — это мощный инструмент для создания и управления отчётами. В данной статье мы рассмотрим, как объединить несколько отчётов в один в FastReport .NET.