logo

Работа с GridState (класс настройки отображения таблиц)

GridState – класс, который содержит в себе настройки отображения таблицы в веб-части ELMA. Основные свойства данного класса:

Название

Тип

Описание

PageSize

int

Количество отображаемых записей на странице

CurrentPage

int

Текущая страница в таблице

SortExpression

string

Выражение для сортировки

SortDirection

ListSortDirection

Направление сортировки (по возрастанию, по убыванию)

ColumnStates

GridStateSet

Список колонок + флаг их видимости. Каждая колонка описывается классом ColumnState

AvailableColumns

List<SelectListItem>

Доступные для отображения колонки

SelectedColumns

List<SelectListItem>

Выбранные для отображения колонки

Создание состояния таблицы в сценариях

Для работы с классом нужно добавить пространство имен:

using EleWise.ELMA.Web.Mvc.Models.Grids

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

var gridState = GridState.CreateNew(string.Format("Folder_{0}", model.Entity.Uid), typeof(IDmsObject));

Если мы хотим поменять список выбранных колонок, то делается это следующим образом: нужно пройти по ColumnStates и в нужной колонке установить свойство Hidden в соответствующее значение (если true, то колонка скрыта, если false, то колонка отображается в таблице). Для смены порядка отображаемых колонок нужно правильно устанавливать свойство Order класса ColumnState. Сортировка выбранных колонок происходит по этому свойству в порядке возрастания.

Для установки сортировки по умолчанию используются свойства SortExpression и SortDirection.

gridState.SortExpression = "Name";
gridState.SortDirection = ListSortDirection.Descending;

Начиная с версии 4.0.29 сортировка по колонке грида, содержащей сущность, выполняется по наименованию. При этом, если выражение сортировки задано вручную, то для сортировки по наименованию нужно указать составное условие: <Название поля с сущностью>.<Название поля для сортировки>. Например, для справочника Controtor (Контрагенты) условие сортировки по полю Ответственный будет выглядеть так: Reponsible.Name.

В версиях ниже 4.0.29 сортировка по колонке грида, содержащей сущность, выполняется по id этой сущности.