[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()
    })
)