[ELMA4] Таблица
Существуют разные варианты создания таблицы:
- Html.DynamicGrid;
- Html.Table – наследник DynamicGrid, но работает только с простым списком.
Динамическая таблица состоит из:
- источника данных;
- колонки (columns);
- различных настроек.
Методы для работы с таблицей
C#
Html.DynamicGrid – создание таблицы на странице со следующими параметрами:
uniqueName– идентификатор таблицы;gridData– источник данных тип GridData.
Пример: на странице создайте таблицу с идентификатором "gridId" и двумя колонками: Наименование и Пользователь.
@(Html.DynamicGrid("gridId", Model))
Html.Table – создание простой таблицы на странице со следующими параметрами:
uniqueName– идентификатор таблицы;source– источник данных тип IEnumerable.
Пример: на странице создайте таблицу с идентификатором "tableId" и двумя колонками: Наименование и Пользователь.
@(Html.Table("tableId", Model)
.Columns(c =>
{
c.For(m => m.Name);
c.For(m => m.User);
})
)
Настройки таблицы:
- колонки / Columns;
- атрибуты строки / RowHtmlAttributes;
- сохранение состояния / SaveState;
- сортировка по умолчанию / DefaultSortExpression;
- возможность сортировки / Sortable;
- возможность кастомизации / Customizable;
- применение расширений / ApplyExtensions;
- отображение таблицы в виде карточки / UseCardGridTemplate;
- контент перед строкой / BeforeRowContent – используется в таблице-карточке.
Подробнее о колонках:
@(Html.DynamicGrid("gridId", Model)
// колонки
.Columns(c => { .. })
)
Настройки колонки:
- заголовок / Header;
- кастомное отображение / Template;
- атрибуты / CellHtmlAttributes;
- ширина / Width.
Пример: на странице создайте таблицу с двумя колонками: Наименование и Пользователь.
@(Html.DynamicGrid("gridId", Model)
.Columns(c =>
{
c.For(m => m.Name);
c.For(m => m.User);
})
)
JS
Для обращения к функциям таблицы нужно использовать следующую конструкцию:
var grid = $("#" + gridId).data('tGrid');
Список функций, определенных в прототипе таблицы:
- AJAX и взаимодействие
ajaxRequest: function (additionalData)ajaxOptions: function (options)isAjax: function ()showBusy: function ()hideBusy: function ()serverRequest: function ()url: function (which)
- сортировка
sort: function (orderBy)toggleOrder: function (column)updateSorting: function ()sortExpr: function ()
- работа с рядами
$rows: function ()expandRow: function (tr)collapseRow: function (tr)
- работа с колонками
$columns: function ()columnFromTitle: function (title)columnFromMember: function (member)normalizeColumns: function ()
- работа со страницами
changePageSize: function (size)pageTo: function (page)updatePager: function ()numericPager: function (pagerElement, currentPage, totalPages)totalPages: function ()firstItemInPage: function ()lastItemInPage: function ()sanitizePage: function (value)
- привязка элементов (внутренняя)
bindData: function (data, html, groups)bindFooter: function()bindTo: function (data)rebind: function (args)
- обработчики событий
rowClick: function (e)headerClick: function (e)refreshClick: function (e, element)pagerKeyDown: function (e)pagerClick: function (e)
Изменение состояния:
refreshGrid(id, callback, [additionalData])– обновляет таблицу;applyFilterGrid(id, form, [params])– применяет к таблице id фильтр с формой form, получает данные от сервера и по умолчанию переходит на первую страницу в таблице;doCommandGridRows(id, commandName, ids, url, data, container)– отправляет на сервер команду (в т. ч. кастомную – подробнее в Описание GridCommand) и загружает ответ в содержимое таблицы;doSortSelectByValue(data, attrSort)– сортирует исходный набор данных data по атрибуту attrSort и возвращает его.
Основные изменения в таблице в ELMA4 по сравнению с ELMA3
1. Добавлено свойство UseCardGridTemplate в настройках таблицы, которая позволяет отрисовать таблицу в виде карточки.
Пример:
@(Html.DynamicGrid("gridId", Model)
.UseCardGridTemplate()
)

2. Добавлена настройка BeforeRowContent, позволяющая добавлять контент перед строкой.
Пример:
@(Html.DynamicGrid("gridId", Model)
.UseCardGridTemplate()
.BeforeRowContent(m => new List<string>
{
Html.ImageButton("#contant_menu.svg").ToHtmlString()
})
)
