logo

[ELMA3] Использование кастомного пейджинга в отчетах Razor

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

Дизайнер

В дизайнере в разделе Отчеты создаем отчет по контрагентам – Все контрагенты, который будет выводить информацию о контрагентах, отрасль и ответственных за контрагентов. Настроим отображение отчета на .NetRazor, на вкладке Настройка отображения:

На вкладке Макет отчета (.Net Razor), открываем Шаблон.

Открывается следующее окно:

Создаем макет отчета на .Net Razor, после чего переходим на код, который сформировался в результате работы Мастера шаблонов.

Находим фрагмент кода, который отвечает за отображение: DataTable items = data.Get(); - такое значение установлено по умолчанию, что означает – стандартное отображение количества выводимых записей:

4

Если вместо Get() прописать GetAll() – на странице будут выводиться все записи, вне зависимости от выбранного количества отображаемых записей.

Для добавления нового количества отображаемых записей, используем Код контроллера на вкладке Настройки отображения. Необходимо установить галочку Использовать пользовательский код контроллера, после чего появляется новая вкладка – Код контроллера:

На вкладке Код контроллера находим Параметры отчета var parameters = inputParams.Info.Parameters as Parameters;

Ниже прописываем:

result.Model.CustomPagerParameters.AdditionalSizes.AddRange(new List<int>(){200, 300, 500});
result.Model.CustomPagerParameters.AdditionalSizes = result.Model.CustomPagerParameters.AdditionalSizes.Distinct().ToList();
var source = result.Model.DataSources["Данные"];

В результате получим – в количество отображаемых записей добавляются 200, 300, 500:

Если необходимо отобразить на странице конкретное количество добавляем строки в код:

if (source.PagerSettings.ContextPageSize == 0)
source.PagerSettings.PageSize = 200;

В целом получится:

Для наглядного примера, отобразим, к примеру, 7 записей: source.PagerSettings.PageSize = 7;

В итоге, на каждой странице будет отображаться по 7 записей.