Работа с 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 этой сущности.