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

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
10 июля 2026

Как настроить Content Security Policy для отчетов FastReport .NET WEB

Узнайте, как настроить Content Security Policy для отчётов FastReport .NET WEB: обзор директив и значений CSP, изменения в архитектуре FastReport, типичные сценарии обхода и способы защиты.
22 июня 2026

Как настроить отчет с Business Objects из кода и дизайнера в FastReport .NET

В этой статье рассматривается реальный пример создания и использования шаблона отчета .frx для подключения к иерархическим бизнес-объектам в FastReport .NET.
21 апреля 2026

Использование водяных знаков в FastReport VCL

В статье подробно рассмотрели функционал добавления водяных знаков в FastReport VCL — как через визуальный интерфейс, так и программно, с помощью кода на Delphi и в скриптах отчётов.

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