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

07.04.2020

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

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

 

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

 

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

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

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

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

 

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

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

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

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

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

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

 

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

 

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

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

 

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

 

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

.NET .NET FastReport FastReport
13 октября 2025

Как использовать Excel формулы в отчете при экспорте в MS Excel

Начиная с версии FastReport .NET 2026.1 появилась возможность экспортировать формулы в Microsoft Excel. Важно правильно настроить экспорт формул и соблюдать синтаксис.
13 октября 2025

Новые возможности экспорта изображений в Microsoft Word в FastReport .NET

В последней версии FastReport .NET мы добавили новые функции экспорта изображений. Теперь можно самостоятельно настроить баланс между качеством и размером итогового документа.
30 сентября 2025

Как установить дизайнер отчетов FastReport .NET с предустановленными плагинами

Читайте в статье как с версии 2025.2.5 для FastReport .NET WinForms и FastReport .NET WEB можно установить дизайнер отчётов со всеми плагинами без сборки dll-файлов.

Не является публичной офертой
© 1998-2025 ООО «Быстрые отчеты»