Вывод данных в таблице - getItems
Процедура GetItems используется для настройки параметров вывода таблицы, также выдает данные для таблицы.
На входе:
- @filters - состояние выбранных фильтров в таблице
- @sort - выбранная сортировка
- @direction - направление сортировки (up, down)
- @page - номер текущей выбранной страницы (пагинация)
- @pageSize - размер пагинации 1 страницы данных
- @username - текущий пользователь
SP GetItems Выдает следующие SELECT:
-
Таблица с данными
-
Количество строк
-
Измененные параметры таблицы (заголовок Title, подсказка Subtitle, панель toolbarAdditional и др. см. ниже)
-
Вывод столбцов подвала таблицы и дополнительных строк в шапке (isHead=1 для строки) (обычно это агрегирующие данные по таблице #result)
Обязательно давайте название столбцам в этом запросе и указывайте их в том же порядке что и ваши столбцы в выводе
ВАЖНО! Если это viewType=’gantt’ (Гант), 'chartbar' или ‘canban’ - то 4 запрос это данные во времени по элементам
- Настройки предустановленных фильтров (т.е. именные ссылки, которые одним щелчком устанавливают некий типовой фильтр, напр. Замороженные лиды)
- Вызов внешних действий (сентябрь 2022).
ALTER PROCEDURE [dbo].[crud_example_getItems]
@filters CRUDFilterParameter READONLY,
@sort sql_variant,
@direction nvarchar(8),
@page int,
@pageSize int,
@username nvarchar(32)
AS
BEGIN
declare @ids TABLE (id int)
-- filters...
declare @filterName nvarchar(128)
select @filterName = Value from @filters where [Key] = 'name'
insert into @ids
select id
from as_menu
where (isnull(@filterName, '')='' or name like '%'+@filterName+'%')
-- SELECT 1
select *
/*
example_data1
*/
from as_menu
where id in (select id from @ids)
/*сортировка
ВАЖНО! Если мы сортируем по полю заданного типа то сортировка будет вестись
именно по этому типу, например если мы включим сортировку по дате, но в поле
попадает тип nvarchar, то сортировка будет идти именно по нему. Чтобы и
избежать этого создаем дополнительно поле нужного типа только в процедуре
(не выводим его), и вставляем его в выражение then */
order by
case when @sort = 'name' and @direction = 'down' then name end desc,
case when @sort = 'name' and @direction = 'up' then name end asc
OFFSET @PageSize * (@Page - 1) ROWS
FETCH NEXT @PageSize ROWS ONLY;
-- SELECT 2
select count(*) from @ids
-- SELECT 3
/*Select '' Title,
'' ToolbarAdditional,
'' GroupOperationsToolbar,
'' EmptyText,
'' FastCreateLinkText, '' FastCreateDialogHeader, '' FastCreateDialogPlaceholder,
0 FastCreateSearch, 0 FastCreateTextarea,
0 HideTitleCount,
0 DisableCellTitle,
'10px' FontSize,
'{filterCode}' FilterMakeup,
1 InstantFilter,
*/
-- 4 SELECT Footer data or kanban/gantt data
-- 5 SELECT - данные по предустановленным фильтрам.
/*
select * from (
select 'Клиенты' Title, 'Текущие клиенты' Tooltip, 'clients' code, 'success' type, 'status=53,54' Filters, 1 Ord
union
select 'Лиды нетворк' Title, 'Потенциальные клиенты' Tooltip, 'leadsNetwork' code, 'info' type, 'Filter=1,2,3||Filter2=1,2,3||status=53||keepConnect=1' Filters, 2 Ord
union
select 'Замороженные лиды' Title, 'Те, что на долгой паузе' Tooltip, 'frozen' code, 'primary' type, 'status=53,54' Filters, 3 Ord
) t1 order by t1.ord
*/
END
END
Нюансы по сортировке и фильтрации в GetItems
-
На вход в хранимую процедуру передается @filter - в нем содержатся все URL параметры и параметры фильтра as-crud
Извлекаем их вышеуказанным способом и используем в первом запросе select
Также в эту коллекцию попадаются все значения, передаваемые как data-параметр в разметку сниппета as-table
Пример вызова параметра:
declare @filterElementID int
select @filterElementID = try_cast(Value as int) from @filters where [Key] = 'elementID'
2. Сортировка в GetItems
select * from @result --параметры в настройках колонок таблицы: Сортировка-ДА
order by
--каждый параметр указываем дважды, прямой и обратный порядок
--в случае использования разметки HTML, сортировка должна идти по чистому
--значению(hide_title)
case when @sort = 'name' and @direction = 'down' then name end desc,
case when @sort = 'name' and @direction = 'up' then name end asc,
case when @sort = 'code' and @direction = 'down' then code end desc,
case when @sort = 'code' and @direction = 'up' then code end asc
OFFSET @PageSize * (@Page - 1) ROWS
FETCH NEXT @PageSize ROWS ONLY;
Примечание:
- В GetItems - если столбец имеет null в 1 строке, то столбец не выводится (т.е. можно динамически скрывать столбцы, присваивая null всему столбцу).
Обязательно используйте isnull(field, '') field для того, чтобы столбец всегда явно выводился. Если столбец не выводится в таблице - первым делом проверьте что у вас не стоит null в этом столбце.
- Вы можете в процедуре GetItems использовать @filters ExtendedDictionaryParameter (Key, Value2) вместо @filters CRUDFilterParameter (Key,Value). Это бывает необходимо, когда данные идут из внешнего источника по АПИ (и в коллекцию передаются данные response от внешнего источника). Подробнее про универсальный API
Дополнительная настройка вывода ячеек в таблице
Есть набор псевдополей, которые позволяют расширить функционал основного поля. Если используем псевдополе, то ОБЯЗАТЕЛЬНО должно быть в таблице основное поле (сами по себе псевдополя без основного поля не используются).
Псевдополя со специальными префиксами, чтобы улучшить вывод ячеек (дальше code1 - это название некой колонки таблицы):
- align_code1 - установка выравнивания для ячейки таблицы (выравнивание ячейки в шапке определяется по 1 строке данных, т.е. что в нем передано в align_{filedCode})
- backcolor_code1 nvarchar(30) - цвет ячейки code1
- badge - красит указанный столбец в badge (значок-панель) элемент (например badge_title = ‘success’ делает зеленый badge для поля title)
Используются стандартные bootstrap 4 названия (light, secondary, warning и т.д.)
- barPercent_code1, barClass_code1 - настройка отображения прогресс-бара процент от 0 до 100 и цвет прогресс-бара (success, danger, warning, info, primary)
- color_code1 nvarchar(30) - цвет текста ячейки в колонке code1. Влияет только на текст, но не на ссылки в ячейке (см. внутреннюю разметку вывода)
- colTitle_code1 - для столбца code1 колонка будет переименована в указанное значение
- desc_code1 - дополнительное описание под значением ячейки code1
- dropdown_code1 - добавляет к колонке разметку, которая будет показываться по нажатию на значок стрелки (некие действия или просто информация). Если это действия, то можно добавить в таком формате:
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Separated link</a>
- editable_code1 - настройки окна редактирования поля (JSON объект):
{
"min": 0, "max": 100, "step":5, // для числовых полей
"placement": "top||bottom||left||right", // расположение всплывающего окна.
"disabled": true // можно отключить редактирование поля для некоторых строк.
"instant": true // для вывода поля редактирования прямо в таблице (только для text, textarea и select)
}
Если instant=true, то поле будет выводиться в виде элемента управления и изменение значения будет происходить при потере фокуса ввода.
Пример на демостенде - https://demo.falconspace.ru/list/watch/redaktirovanie-v-tablice-cherez-elementy-upravleniya-pryamo-v-tablice---68. Данная опция работает только для типов поля редактирования text, textarea, select.
Пример:
-- in SELECT 1
select isnull(name, '') name,
'some desc1' desc_name,
'some data or control in substring' sub_name
from table1
Для Переключателей можно в этом параметре передать дополнительные настройки: on (текст Включено), off (текст Выключено), onsstyle (warning и т.д.), offstyle (secondary), size (small, mini, normal, large).
Специальные названия полей в SELECT 1, которые в целом влияют на строку таблицы:
Варианты настройки editable_col1:
- min,max,step - указывает для числовых полей минимальное, максимальное значение и шаг приращения (при изменении поля)
- placement - указывает расположение окна редактирования относительно ячейки
- placeholder - указывает подсказку к полю
- inputclass - задает CSS для поля
- escape - если true - то показываем значение в сыром HTML (если в значении есть теги)
- clear - если true - то показываем кнопку очистки поля
- rows - для многострочных полей textarea задает количество строк
- для некоторых типов полей HTML5 могут использоваться также size, minlength, maxlength, pattern, orient
- disabled - если true, то режим редактирования отключается для строки. ВАЖНО!!! Обязательно проверьте в updateItemField может ли пользователь менять данную строку или нет. Пример установки disabled:
select *, '{"disabled": '+iif(code1='newForm', 'false' , 'true')+'}' editable_role
from #result
Также в разметке ячейки таблицы можно использовать разметку {edit-code1}, где code1 - код редактируемого поля. В этом случае вместо этой разметки будет выведено указанное поле.
Примечание:
Для псевдополей (desc_colName) не нужно создавать в таблице реальные поля. Они просто прописываются в выходном запросе SELECT 1 в GetItems.
Пример: Нам надо красить ячейки для колонки title (title - это код существующей колонки в таблице).
Для этого в GetItems SELECT 1 добавляем вывод этого поля: ‘#f00’ backcolor_title
Дополнительные параметры настройки таблицы в GetItems SELECT 3
- ButtonSize - управляет размерами кнопок в тулбаре (варианты - sm, md, lg).
- CardGroupType - тип вывода карточек: deck (в 1 строку карточки), columns (разделение по колонкам),
group (все карточки в 1 строку и выглядят как единая панель). В большинстве случаев подойдет columns. Смотреть подробнее.
- ChangeFontSize - если 1, то вверху появляются кнпоки для изменения размера шрифта.
- Compact - если 1 то таблица будет сжатой с уменьшенными отступами.
- Collapse 0,1,2. Служит для сворачивания таблицы по названию. 0 - нет сворачивания. 1 - есть сворачивание, при загрузке показан в открытом виде. 2 - есть сворачивание, при загрузке свернут
- CollapseFilter 0,1,2. Служит для сворачивания фильтров по иконке рядом с названием. 0 - нет сворачивания. 1 - есть сворачивание, при загрузке показан в открытом виде. 2 - есть сворачивание, при загрузке свернут (иконку кнопки можно заменить через data-filterCollapseIcon="fas fa-filter" у сниппета).
- DisableCellTitle - отключить подсказки у ячеек (дублируют название колонки и ее подсказку)
- DisableFrozenHeader - отключить для таблицы возможность показа шапки таблицы наверху при скроллинге (актуально когда есть несколько таблиц на странице либо есть вложенные таблицы)
- DisableSaveState - если 1, то состояние фильтра и сортировок не будет сохраняться при закрытии/перезагрузке страницы.
- DropdownPanel, DropdownPanelText - настройка выпадающей панели вверху рядом с названием таблицы. См. подробнее.
- EditableMode - задает тип редактирования элемента. inline - внутри таблицы. popup - редактирование как малое всплывающее окошко
- EmptyText - текст, который отображается когда ничего не найдено.
- EnableExcelExport, EnablePrint, EnableClipboard - если 1, то появляются кнопки выгрузки таблицы в Excel, отправку на печать или копирование в буфер обмена ячеек таблицы (с разделением через \n и \t). Про стилизацию выгрузки Excel.
- EnableJSONExport, EnableXMLExport, EnableCSVExport - если 1, то будет на странице доступна кнопка с выгрузкой данных в указанном формате. Подробнее про выгрузку таблицы в различные форматы.
- FastCreate, Remove, Comments - включают (=1) возможность Быстрого добавления, Удаления, Комментария. Чтобы корректно работало, необходимо снять соответствующую настройку в форме параметров таблицы.
- FastCreateDialogDefaultValue - указание значение по умолчанию для поля в форме быстрого создания (для текстового поля, многострочного поля и списка).
- FastCreateDialogHeader - заголовок диалогового окна Создать.
- FastCreateDialogPlaceholder - подсказка при создании в диалоговом окне Создать.
- FastCreateLinkText - текст ссылки Создать….
- FastCreateSearch - если true, то добавление будет работать как autocomplete список с поиском.
- FastCreateSelectCol - указываем колонку таблицы (в /tableCols) с типом редактирования Список. Быстрое добавление будет работать в виде элемента Список со значениями из процедуры dict этой колонки.
- FastCreateTextarea - если true, то элементом добавления будет многострочное поле.
- FilterMakeup - разметка HTML для фильтра. Фильтры колонок указываются здесь через {colCode}.
(у колонки должен быть установлен тип данных фильтра). И предустановленный параметр {buttons} - для вставки кнопок фильтра.
- FilterOptions - настройка свойств фильтров через JSON.
- FontSize - указать размер шрифта для таблицы (например 10px, 0.85em).
- FooterText - разметка, которая выводится под таблицей.
- FrozenLeftCol - если 1, то левая колонка фиксируется на месте при скроллинге таблицы вправо (данная настройка может конфликтовать с подтаблицами, DisableFrozenHeader), для мобильных устройств она не используется. Подробнее...
- GanttScale, GanttNavigate, GanttItemForm, GanttItemFormTitle - настройки вывода диаграммы Ганта (см. отдельный раздел Ганта в таблицах).
- GroupOperationsToolbar - разметка панели кнопок для групповых операций (данная разметка будет появляться когда выбрана галочками хотя бы одна строка таблицы). В разметке могут быть какие-то кнопки на модальные формы (в itemID передается ids выбранных строк таблицы).
- HeaderTag - h1-h6 - указывает какой тег использовать для заголовка (по умолчанию h1).
- Height - высота таблицы (например, 500px). Работает только для немобильного вида. Задает максимальную высоту части компонента, где выводится таблица.
- HelpLink - если указано поле таблицы Помощь, то выведется ссылка с названием в этом параметре (по умолчанию текст "Как это работает") - при клике будет выведена помощь по таблице внизу слева. Обновление Май 2025.
- Hide - если 1, то компонент совсем не выведется (пустой div и установка класса hide).
- HideFilterButtons - если 1, скрывает кнопки фильтрации и сброса фильтра и включает режим instantFilter (т.е. при изменении фильтра запускается поиск).
- HideHeader - если 1, то скрывается шапка таблицы
- HideTitleCount - скрыть показ количества строк в заголовке
- ImportOptions - импорт данные через файлы cvs, txt. Подробнее про импорт данных через компонент Таблица.
- InstantFilter - если 1, то при изменении значений фильтра сразу происходит применение фильтра к данным
- LayoutMakeup - дает возможность задать разметку для скелета компонента. При этом в нее вставляются специальные параметры, которые заменяются на части компонента (не работает для режимов ViewType): {title}, {toolbar}, {filters}, {predefinedFilters}, {paging}, {data}
- KanbanItemForm, KanbanItemFormTitle - настройки панелей Канбан (см. отдельный раздел про Канбан в таблицах)
- ManageCols - если 1, то вверху справа будет кнопка настройки порядка и видимости столбцов таблицы.
- MapShowUserLocation, MapUserImageUrl, MapShowAllRegions, MapShowLocationInRange - настройки вывода карты
(см отдельный раздел про использование карт в таблицах)
- ProccessOptions. Это JSON, в котором прописаны правила обработки таблицы после загрузки (выделение цветом min и мах по строкам или столбцам).
- RemoveConfirmText - текст подтверждения при удалении записи из таблицы
- RowMakeup - специальный режим, при котором данные выводятся не в табличном виде, а в заданной разметке. В параметре передается разметка для строки. Подробнее о кастом разметке таблицы
- ShowChecksCol - если 1, то будут показываться галочки для групповых операций (при этом галочка в интерфейсе должна быть снята)
- ShowNumsCol - если 1, то будет показываться столбец номера слева в таблице (при этом галочка в интерфейсе должна быть снята)
- Sortable - если 1, то включается режим drag-and-drop сортировки строк таблицы. Пример работы сортировки
- TableHeaderOptions - строка с JSON, содержащая настройки стилей для шапки таблицы. Параметры fontSize, align, background, color. См. демостенд
- TableHeaderMakeup - разметка (теги tr, th) шапки таблицы (можно вставлять переменную {header} - вставится стандартная шапка вместо этой переменной).
- Theme - (пустое, light, dark) - выбрать стилизацию таблицы
- Title - заголовок таблицы
- TitleTooltip - подсказка рядом с заголовком (при двойном клике - подсказка копируется в буфер обмена)
- Subtitle - панель появляется под названием
-
Toolbar (старое название - ToolbarAdditional) - разметка панели кнопок для таблицы (находится справа от названия)
- Ultracompact - если 1, то ячейки таблицы будут совсем без отступов (padding: 1px)
- VerticalBorders - если 1, то у ячеек будут вертикальные границы, а не горизонтальные (по умолчанию выводятся горизонтальные границы).
- ViewType - тип вывода данных (по умолчанию вывод таблицы. Варианты - kanban, gantt, map, timeline, card, chartbar, chart, progress, calendar, custom)
- ZoomCells - если 1, то ячейки будут увеличиваться при наведении (актуально когда размер шрифта малый и много данных на странице)
- Параметры диаграмм (для ViewType=chart). ChartType, ChartTitle, ChartWidth, ChartHeight, ChartLineCommaLabels, ChartOptions (JSON) - настройки вывода диаграмм (см. отдельный раздел про настройки диаграмм).
Страница-источник на сайте falconspace.ru
-
Начало работы
-
Основа Falcon Space
-
Руководства
-
Возможности
-
Коммуникация пользователей
-
Таблицы
Работа с таблицами Вывод данных в таблице - getItems Редактирование данных в колонках таблицы - updateField Удаление строки в таблице - deleteItem Создание строки в таблице - FastCreate Операции в таблице - на строку, групповые операции Настройка параметров таблицы Фильтрация данных в таблице Настройка колонок таблицы Настройка сниппета таблицы Как сделать сортировку в таблице Как реализовать подтаблицу (вложенная таблица), подформу в таблице Как сделать таблицу в модальном окне (открывается в диалоговом окне) Как связать 2 таблицы Кастомная разметка в таблице Выгрузка данных таблицы в XML, JSON, CSV JS коллбеки для таблицы Загрузка таблицы по ссылке Как связать таблицу и редактирование сущности (зависимая страница). Master-slave Как использовать комментарии в таблицах Как добавить в фильтре значение Не выбрано со значением Как установить ширину колонки в таблице Как добавить диапазон даты или чисел (слайдер) в фильтр Как сделать операции только для некоторых строк Как делать различный набор столбцов одной таблицы для разных ролей Как сделать Editable для галочки (Да/Нет) в AS CRUD Как редактировать колонку с датой Как скрыть строчные операции в таблице для определенных строк Как добавить коллбек после загрузки таблицы Отображение таблиц на смартфоне Как работать с галочками в таблице Частые ошибки при настройке таблицы (почему не работает таблица) Как обновить подтаблицу после выполнения некой операции Как обрабатывать групповые операции через модальную форму Как создать предустановленные фильтры для таблицы Как убрать показ количества строк результата в заголовке таблицы? Как сделать сворачивание таблицы (collapse table) Как убрать старые dict процедуры в формах и таблицах Как сделать фильтр с деревом галочек Как отключить сохранение состояния таблицы (фильтры) Как сделать ссылку на всю строку таблицы Как передать через URL значение фильтра Как сделать обрезание ячеек таблицы Сортировка строк в таблице Создание сущности с учетом значений фильтров Оптимизация запроса SQL - извлечение данных для таблицы Режим кастом вывода через JS (custom) Как настроить дополнительные шапку и подвал у таблицы Как сделать зависимые фильтры в таблице Импорт данных в формате файлов txt, csv, excel через компонент Таблица Как гибко управлять видимостью столбцов таблицы Как сделать раскрытие подстроки в таблице через любую ссылку Режим быстрой фильтрации строк без обращения на сервер Выпадающая панель рядом с названием таблицы dropdownPanel Как убрать при загрузке установку фокуса ввода на фильтр (data-nofocus)? Как сделать аналитику по периодам (таблица с интервалами дат) Кастомизация вида операций таблицы Стилизация фильтров таблицы Анализ данных в таблице через внешние сервисы (опция apiSendDataOptions)
-
Формы
-
Поля формы
-
Лендинги
-
Дизайн, стилизация, юзабилити
-
Интеграции
-
Универсальный API
-
Каталоги
-
Навигация
-
Документы
-
Дополнительные компоненты
-
Продвижение, SEO
-
Системные моменты
-
Системное администрирование
-
HOWTO
-
Загрузка файлов, картинок
-
HOWTO SQL
-
HOWTO JS
-
HOWTO Верстка
-
Решение проблем
-
Советы по реализации