Falcon Space. Работа с таблицами

Описание компонента Таблица

Смотреть пример компонента Таблица

Руководство Создание таблицы по шагам

Компонент Таблица позволяет вывести некие списковые данные в виде таблицы и манипулировать данными в таблице (добавление, редактирование, удаление, групповые операции и т.д.).

Не путайте таблицу базы данных и компонент Таблица. Они никак не связаны. При создании кололок компонента Таблица в структуре базы данных изменений не происходят (не создаются таблицы БД или колонки таблицы БД). 

Чтобы создать таблицу, вам необходимо: 

  1. На странице вывести сниппет с таблицей и кодом (например code). 
    <div class="as-table" data-code="{code}"></div>
  2. Создать в разделе таблицы таблицу с кодом code. 
  3. Отредактировать параметры таблицы (эти параметры повторяют параметры компонента as.crud2).
  4. Создать все необходимые колонки (параметры колонок очень похожи на параметры колонок таблицы as.crud2).
  5. Реализовать все необходимые хранимые процедуры (именование - crud_{code}_functionName): 
    1. GetItems - фильтрация и получение данных таблицы
    2. EditField - редактирование поля в строке таблицы
    3. DeleteItem - удаление строки данных
    4. FastCreate - создание строки таблицы на основе одного поля (напр. Название или Код). 
    5. Методы получения справочников. 

Параметры таблицы 







Примечание:
Параметр Источник API - это коды исходящих запросов API (через запятую), которые выполняются перед GetItems и отклики передаются через переменную
@filters (обязательно типа ExtendedDictionaryParameter). В Key - название кода исходящего API. В Value2 - response от внешнего источника (в JSON или XML).
Подробнее про универсальный API

Пример работы внешнего источника API вывода таблицы.

Параметры колонок таблицы 




Примечание

  • ВАЖНО. Колонки именуйте обязательно в lowerCamelCase, например parentName (а не PARENT_NAME, ParentName).
  • Вместо хранимки для списка значений колонки можно указать JSON для вывода статичного списка
    (напр для булевских элементов  можно указать {1: “Да”} ) 
  • На странице Таблицы есть кнопка Демо для таблиц. Она доступна для тех таблиц, которые не связаны с родительскими таблицами
    (т.е. иначе нужен будет доп параметр в URL для корректной работы таблицы).
  • В таблице обязательно должен быть столбец с кодом id и PK=Да (Видимый=Нет).
  • ВАЖНО. Если столбец не указывать в выводе GetItems - то он не будет показываться на странице и не будет ошибки.
    Таким образом можно варьировать столбцы таблицы в зависимости от пользователя и других параметров. 
  • Параметр id с PK=true ВСЕГДА должен идти на первом месте. По возможности не применяйте ord < 0. 


Настройка хранимых процедур для таблицы

Основные хранимые процедуры getItems, updateField, deleteItem, fastCreate делаем через панель управления.
Крайне важно следовать общему стилю и виду шаблонных процедур (они имеют префикс crud_example_).

 

GetItems

Выдает следующие SELECT:

  1. Таблица с данными
  2. Количество строк
  3. Измененные параметры таблицы (заголовок Title, подсказка Subtitle, панель toolbarAdditional и др. См. ниже)
  4. Вывод столбцов подвала таблицы и дополнительных строк в шапке (isHead=1 для строки) (обычно это агрегирующие данные по таблице #result).
    Обязательно давайте название столбцам в этом запросе и указывайте их в том же порядке что и ваши столбцы в выводе.
    ВАЖНО! Если это viewType=’gantt’ (Гант), 'chartbar' или ‘canban’ - то 4 запрос это данные во времени по элементам. 
  5. Настройки предустановленных фильтров (т.е. именные ссылки, которые одним щелчком устанавливают некий типовой фильтр, напр Замороженные лиды). 
CREATE PROCEDURE [dbo].[crud_newTableTest_getItems]
	@filters CRUDFilterParameter READONLY, -- Параметры не меняем никогда
	@sort sql_variant,
	@direction nvarchar(8),
	@page int,
	@pageSize int,
	@username nvarchar(32)
AS
BEGIN
	-- основная процедура настройки таблицы

	/*результирующая таблица (описываем здесь поля (как в колонках таблицы))
	 спецполя для нее: icon_age, prev_age, prevcolor_age, color_age,
                           backcolor_age, desc_name, color, barPercent_age,
                           barClass_age, badge_age*/
	declare @result TABLE (id int, name nvarchar(256), code nvarchar(64) )


	/* извлекаем доп параметры из URL (в основном применяются для фильтров или
           если нужно достать itemID, находится по [key] = 'itemID')*/
	declare @filterName nvarchar(128)
	select @filterName = Value from @filters where [Key] = 'name'

	insert into @result
	select top 2 id, 'name', code
	from as_trace
        --помимо условия результатируещего набора, применяем фильтры
	where (isnull(@filterName, '')='' or code like '%'+@filterName+'%')

	-- 1 SELECT - сами данные
	select * from @result
        /*сортировка
          ВАЖНО! Если мы сортируем по полю заданного типа то сортировка будет вестись
          именно по этому типу, например если мы включим сортировку по дате, но в поле
          попадает тип 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,
		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;

	-- 2 SELECT - кол-во в таблице
	select count(*) from @result

	-- 3 SELECT Дополнительные настройки таблицы
	/*Select  '' Title,
		'' ToolbarAdditional,
		'' GroupOperationsToolbar,
		'' FastCreateLinkText, '' FastCreateDialogHeader,
                '' FastCreateDialogPlaceholder,
		 0 HideTitleCount,
		 0 DisableCellTitle,
		 '10px' FontSize,
		 '{filterCode}' FilterMakeup,
		 1 InstantFilter,
		   */
		--'gantt' ViewType,
		-- GanttScale, GanttNavigate, GanttItemForm, GanttItemFormTitle
		-- KanbanItemForm, KanbanItemFormTitle


	-- 4 SELECT Данные для подвала страницы или данные для Ганта/Канбана (если установлен ViewType в 3 SELECT)

       -- 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
Нюансы по сортировке и фильтрации в GetItems 
  1. На вход в хранимую процедуру передается @filter - в нем содержатся все URL параметры и параметры фильтра as-crud.
    Извлекаем их вышеуказанным способом и используем в первом запросе select.
    Также в эту коллекцию попадаются все значения, передаваемые как data- параметр в разметку сниппета as-table 
Пример разметки:
<div class="as-table" data-code="dashboardPanels" data-elementid="566" data-name="name1"></div>

Пример вызова параметра:
 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
Дополнительная настройка вывода ячеек в таблице

Также можно указать дополнительные столбцы со специальными префиксами, чтобы улучшить вывод ячеек: 
  • icon_age nvarchar(256) - добавляет иконку к ячейке age (напр 'fa fa-upload') 
  • prev_age float - указывает прирост в процентах по сравнению с предыдущим показателем (для колонки age). 
  • prevcolor_age   nvarchar(256) - цвет прироста колонки (актуально когда есть параметр prev_. Пример: #aaa)
  • color_age nvarchar(30) - цвет текста ячейки в колонке age. Влияет только на текст, но не на ссылки в ячейке (см. внутреннюю разметку вывода). 
  • backcolor_age nvarchar(30) - цвет ячейки age
  • desc_name  - дополнительное описание под значением ячейки age
  • prefix_name, suffix_name - добавляют в ячейку текст серым перед или после значения. 
  • color - красит фон строки в указанный цвет (например, “#aabbcc”)
  • rowLink - устаналивает ссылку для всей строки таблицы
  • barPercent_age, barClass_age - настройка отображения прогресс бара процент от 0 до 100 и цвет прогрессбара (success, danger, warning, info, primary)
  • badge - красит указанный столбец в badge (значок-панель) элемент (напр. badge_title = ‘success’ делает зеленый badge для поля title).
    Используются стандартные bootstrap 4 названия (light, secondary, warning и т.д.).  
  • sub_age - указываем разметку подстроки. К ячейке добавляется +/- для раскрытия строки (в ней показывается указанная разметка).
    Здесь можно задавать также разметку компонентов (Таблица, форма и др). 
  • modal_age - указываем разметку, которая будет выводить в модальном окне. К ячейке добавляется кнопка-иконка вывода разметки в модальном окне.
    Здесь можно задавать также разметку компонентов (Таблица, форма и др). 
    У модального окна можно задать заголовок через псевдоколонку
    modalTitle_age, а также можно понять иконку вызова модального окна через modalIcon_age = 'fa-dot-circle'
  • colTitle_code1 - для столбца code1 колонка будет переименована в указанное значение
  • hiddenDevice_code1 (например 'xs sm md lg xl'). Значения разрешений через пробел, для которых будет скрываться ячейка. Например, 'xs sm' скроет на мобильных устойствах столбец.
Примечание:
Для псевдополей (desc_colName) не нужно создавать в таблице реальные поля.
Они просто прописываются в выходном запросе SELECT 1 в GetItems.  

Пример
: Нам надо красить ячейки для колонки title (title - это код существующей колонки в таблице).
  1. В GetItems в @result (или #result) объявляем столбец backcolor_title nvarchar(128)
  2. В select добавляем вывод этого поля: ‘#f00’ backcolor_title
  3. Проверяем, что фон у ячейки корректно установлен на странице. 
 


Дополнительные параметры настройки таблицы в GetItems SELECT 3
  1. Title - заголовок таблицы
  2. TitleTooltip - подсказка рядом с заголовком. 
  3. ToolbarAdditional - разметка панели кнопок для таблицы
  4. GroupOperationsToolbar - разметка панели кнопок для групповых операций
  5. EmptyText - текст, который отображается когда ничего не найдено
  6. FastCreateLinkText - текст ссылки Создать….
  7. FastCreateDialogHeader - заголовок диалогового окна Создать
  8. FastCreateDialogPlaceholder - подсказка при созданиии в диалоговом окне Создать
  9. HideTitleCount - скрыть показ кол-ва строк в заголовке.
  10. FontSize - указать размер шрифта для таблицы (напр 10px, 0.85em)
  11. FilterMakeup - кастомизированная разметка фильтра. В него передаются через {colName} параметры фильтра (колонки с указанным типом фильтра). 
  12. InstantFilter - если 1, то при изменении значений фильтра сразу происходит применение фильтра к данным. 
  13. Compact - если 1 то таблица будет сжатой с уменьшенными отступами.
  14. ZoomCells - если 1, то ячейки будут увеличиваться при наведении (актуально когда размер шрифта малый и много данных в странице). 
  15. EnableExcelExport, EnablePrint - если 1, то появляются кнопки выгрузки таблицы в Excel или отправку на печать
  16. EditableMode - задает тип редактирования элемента. inline - внутри таблицы. popup - редактирование как малое всплывающее окошко. 

  17. DisableFrozenHeader - отключить для таблицы возможность показа шапки таблицы наверху при скроллинге
    (актуально когда есть несколько таблиц на странице либо есть вложенные таблицы). 
  18. DisableCellTitle - отключить подсказки у ячеек (дублируют название колонки и ее подсказку).
  19. ViewType - тип вывода данных (по умолчанию вывод таблицы. Варианты - kanban, gantt, map, timeline, card, chartbar, chart, progress, calendar).
  20. GanttScale, GanttNavigate, GanttItemForm, GanttItemFormTitle - настройки вывода диаграммы Ганта (см. отдельный раздел Ганта в таблицах).
  21. KanbanItemForm, KanbanItemFormTitle - настройки панелей Канбан (см. отдельный раздел про Канбан в таблицах). 
  22. MapShowUserLocation, MapUserImageUrl, MapShowAllRegions, MapShowLocationInRange  - настройки вывода карты.
    (см отдельный раздел про использование карт в таблицах). 
  23. CardGroupType - тип вывода карточек: deck (в 1 строку карточки), columns (разделение по колонкам),
    group (все карточки в 1 строку и выглядят как единая панель).. В большинстве случаев подойдет columns. 
  24. Параметры диаграмм (для ViewType=chart). ChartType, ChartTitle, ChartWidth, ChartHeight, ChartLineCommaLabels - настройки вывода диаграмм (см. отдельный раздел про настройки диаграмм).
  25. FilterMakeup - разметка HTML для  фильтра. Фильтры колонок указываются здесь через {colCode}
    (у колонки должен быть установлен тип данных фильтра).  
  26. Collapse 0,1,2. Служит для сворачивания таблицы по названию. 0 - нет сворачивания. 1 - есть сворачивание, при загрузке показан в открытом виде. 2 - есть сворачивание, при загрузке свернут.
  27. HeaderTag - h1-h6 - указывает какой тег использовать для заголовка (по умолчанию h1). 
  28. DisableSaveState - если 1, то состояние фильтра и сортировок не будет сохраняться при закрытии/перезагрузке страницы.
  29. Theme - (пустое, light, dark) - выбрать стилизацию таблицы.
  30. ShowChecksCol - если 1, то будут показываться галочки для групповых операций (при этом галочка в интерфейсе должна быть снята).
  31. ShowNumsCol - если 1, то будет показываться столбец номера слева в таблице (при этом галочка в интерфейсе должна быть снята).

UpdateField  

SELECT 1. Возвращает модель Msg, Result, RefreshContainer (область на странице, которую надо обновить). Если Result ='1', то операция совершена успешно.
SELECT 2. Второй запрос возвращает Вызов внешних действий.
SELECT 3 задает другие поля для обновления. Key - код поля, Value - новое значение для него. Для изменения полей в подвале таблицы напротив соотвествующего
столбца в качестве Key указывается footer-{code}

CREATE PROCEDURE [dbo].[crud_newTableTest_updateField]
	@itemID int, -- параметры не менять
	@field nvarchar(64),
	@value nvarchar(max),
	@username nvarchar(64)
AS
BEGIN
-- обновление поля таблицы
-- для приведения типов используйте try_cast(@value as int), Для даты try_convert(date, @value, 104)

if(@field = 'ХХХ') begin -- по коду проверяем что за поле и меняем его
	update as_trace set code = @value where id = @itemID
end else if(@field = 'YYY') begin
	update as_trace set code = @value where id = @itemID
end else begin
	select 'Невалидный код свойства' Msg, 0 Result
	return
end

-- SELECT 1 Вывод результата
select '' Msg, 1 Result, '' RefreshContainer
                        -- если нужно передать ошибку указываем:
                        -- 'Текст ошибки' Msg, 0 Result

-- SELECT 2 Внешнее действие (см в формах про Внешнее действие)
select 1

-- SELECT 3 Обновляемые столбцы (когда надо изменить другие столбцы или футер таблицы)
Select 'total' [Key], '' Value
union
Select 'footer-total' [Key], '' Value


END

DeleteItem

Возвращает модель Msg, Result

CREATE PROCEDURE [dbo].[crud_newTableTest_deleteItem]
	@itemID int,
	@username nvarchar(32)
AS
	-- удаление строки таблицы
	SET NOCOUNT off ;


	 -- проверки перед удалением
	 declare @count int
     select @count = count(*) from as_en_entityInstanceFields
     where fieldID = @itemID

     if(@count>0) begin
		select 'На поле есть ссылки в экземплярах ('+cast(@count as nvarchar)+' шт.)' Msg, 0 Result
        return
     end

	-- удаление элемента
	delete from as_trace where id = @itemID

	if (@@ROWCOUNT > 0) begin
		select '' Msg, 1 Result
	end else begin
		select 'Запись не удалилась из базы' Msg, 0 Result
	end

Примечание:
Если хранимая процедура вернула результат {Result: false, Msg: 'Ошибка'},
то поле не будет обновлено и будет выведена ошибка редактирования для пользователя. 

FastCreate

Возвращает модель результата Msg,Result,RedirectUrl

CREATE PROCEDURE [dbo].[crud_newTableTest_fastCreate]
	@filters CRUDFilterParameter READONLY,
	@text nvarchar(256),
	@username nvarchar(32)
AS
BEGIN
	-- создание сущности в таблице по 1 полю @text
	-- извлечение параметров из URL
	declare @filterItemID int
	select @filterItemID = try_cast(Value as int) from @filters where [Key] = 'itemID'


	-- проверки
	declare @id int
	select @id = id from as_trace where code = @text
	if(@id>0) begin
		select 'Элемент с таким кодом уже существует в таблице' Msg, 0 Result
		return
	end


	-- добавление элемента в таблицу
	insert into as_trace(header, code)
	values(@text, @text )
	select 'Элемент создан' Msg, 1 Result

END

Если необходимо реализовать быстрое добавление с выбором данных из справочника (через поиск в autocomplete вместо текстового поля),
то необходимо установить в SELECT 3 GetItems параметр FastCreateSearch = 1 и реализовать дополнительно процедуру следующего вида: 


-- имя содержит префикс _search
CREATE  PROCEDURE [dbo].[crud_productsForSupplier_fastCreate_search]
/*На входе строка поиска username, itemID оставлен для
                        совместимости и неиспользуется*/
   @q nvarchar(256),
   @itemID nvarchar(128),
   @username nvarchar(256)
AS
BEGIN
	CREATE TABLE dbo.#result (id int, [text] nvarchar(256), [desc] nvarchar(1024), [type] nvarchar(256), [date] date)

	insert into #result
	select id, name, '', '', getdate()
	  from as_cat_products p

	where name like '%'+@q+'%' and id >2
	-- на выходе - модель id, text, desc, type, date
	select * from #result
	drop table #result
END
go

В процедуру FastCreate в итоге приходит на числовой внешний ключ выбранной сущности, а ее текстовое название. 
Если нужен Textarea (многострочное поле) в FastCreate, то ставим в GetItems в SELECT 3 параметр FastCreateTextarea 1

Примечание: 
  • Если выходной параметр RedirectUrl непустой, то после успешного сохранения будет редирект на указанную страницу. 
  • В процедуру search передается itemID - он заполняется из атрибута data-itemID от сниппета таблицы.


Справочники для колонок с select (для фильтра или редактирования)

Имя процедуры задается автоматически в виде crud_{tableCode}_{colCode}_dict и процедура редактируется через кабинет в Управление колонками. 

CREATE procedure [dbo].[crud_newTableTest_id_dict]
	@tableCode nvarchar(32),
	@col nvarchar(32),
	@username nvarchar(32)
as
begin
	-- источник данных для списка значений (Value, Text)
	select 0 Value, 'Не выбрано' Text
	union
	select top 5 id Value, code Text
	from as_trace


	/*
	for bool types:
	select 0 Value, 'Нет' Text
    union
    select 1 Value, 'Да' Text

	*/
end
Передается ItemID и Col на случай использования универсальной процедуры. На выходе модель Value, Text, Color.

Примечание. 
  1. в процедуру dict может передаваться необязательный параметр @parameters ExtendedDictionaryParameter в котором передаются дополнительные параметры (langID, falconGuid и itemID, переданный в data-itemID на компонент Таблица).
  2. Ранее использовалось поле для хранения имени процедуры. Он остался рабочим для совместимости.
    Сейчас это поле не выводится и вместо него необходимо использовать новые процедуры с редактированием через кабинет. 
  3. Если нужен элемент Не выбрано, то можно сделать  union select 0 Value, ‘Не выбрано’ Tex
  4. Если установлен цвет Color, то у элемента (Галочка, Список, Радиокнопка) будет установлен фон (CSS background-color) с указанным цветом

Типы фильтров для колонки таблицы
  • Целое число int
  • Дробное число float
  • Строка string
  • Список select
  • Флажок bool
  • Дата date
  • Диапазон дат daterange
  • Флажки checkboxes
  • Диапазон чисел intrange
  • Выбор radio radio
  • Выбор chosen chosen
  • Выбор множ. chosen chosenMultiple
  • Переключатель switch  (ВАЖНО. Не используйте при большом PageSize(>30), т.к. инициализация множественных switch делает задержку при загрузке).
Если установлен фильтр у колонки, то он будет выводиться вверху как фильтр. 

Если нужно размещать по другому фильтры - вы можете использовать в GetItems SELECT 3 параметр FilterMakeup
и вставлять там фильтры через {colCode} (colCode-  код колонки, у которой установлен тип фильтра).


Сама фильтрация происходит в запросе GetItems SELECT 1. Фильтр приходит в коллекции @filters. Извлечь можно так: 
declare @filterRole nvarchar(128)
select @filterRole = Value from @filters where [Key] = 'role'

Inline редактирование в таблице 

Вы можете редактировать следующие типы данных.
Строка
text
Многострочный текст
textarea
Список
select
Дата
date
Дата и время
datetime
Галочки
checklist
Переключатель
switch
Галочка
bool

Непосредственное сохранение поля происходит в процедуре UpdateField. 

Кастомизация для FastCreate

Используйте в 3 запросе GetItems переменные для переименования основных меток: 

  • fastCreateLinkText  - текст кнопки Создать
  • fastCreateDialogHeader - заголовок диалогового окна
  • fastCreateDialogPlaceholder - текст подсказки.  

Операции в таблице (tableOperations)

В таблице можно делать некоторые кастомизированные операции (через использование своих хранимых процедур). Есть 3 вида операций: 

  • групповые - кнопка в тулбаре для групповых операций
  • операция со строкой - кнопка у строки
  • кнопка в тулбаре


Настройки операций в таблице

Для добавления операции к таблице, необходимо создать операцию в разделе операции таблицы (ссылка Операции в строки таблицы в разделе Таблицы). 

Для операции указываем: 

  1. код - используется для построения имен хранимых процедур. 
  2. название - выводится в таблице
  3. иконка - иконка Font Awesome (подобрать нужную иконку вы можете в разделе  Статическое меню).
  4. текст подтверждения - если задано, то перед выполнением операции будет запрашиваться подтверждение операции
  5. сообщение - сообщение о выполнении операции при успехе
  6. Скрыть строку после выполнения операции - если ДА, то скрываем строку, для которой была вызвана операция
    (действует только для построчных операций). 
  7. Перезапуск страницы после выполнения операции - если ДА, то перезагрузка всей страницы при успешном выполнении. 
  8. Пользователи, Роли - кто имеет доступ на выполнение этих операций. 
  9. Тип - операция может быть: 
    1. для строки (выводится тогда в строке), 
    2. просто в тулбаре (кнопка вверху таблицы)
    3. для групповых операций (появляется вверху таблицы, когда выбрано одна или более строк галочками -
      для этого необходимо у таблицы установить настройку Показывать галочки для групповых операций).
После настройки операций переходим к созданию хранимых процедур. 
Хранимые процедуры операций таблицы
Действия по кнопкам реализуются через хранимые процедуры следующего вида 

crud_{tableEntity}_{operationCode}_operation.

На вход процедуре передается itemIDs nvarchar(2048), в котором содержатся ID выбранной строки, либо выбранных строк для групповой операции,
либо все строки страницы (если это просто кнопка для toolbar).
--имя строится как crud_{table}_{operationCode}_operation
CREATE PROCEDURE [dbo].[crud_newTableTest_newOperation_operation]
	@filters CRUDFilterParameter READONLY,
	@itemIDs nvarchar(256),
	@username nvarchar(32)
AS
BEGIN
	-- выполнение операции таблицы
	-- если это групповая операция то itemIDs содержит значение id через запятую

	--declare @filterFormID int -- для использования переменных переданных неявно (через URL)
	--select @filterFormID = try_cast(Value as int) from @filters where [Key] = 'formID'

	-- select value from dbo.split(@itemIDs, ',') перебор значений выбранных элементов
	declare @res bit = 0

	-- SELECT 1 msg, Result, Info
	if(@res=1) begin
		select 'Произошла ошибка' Msg, 0 Result
	end else begin
		select '' Msg, 1 Result, '' Info, '' RedirectUrl
	end

	-- SELECT 2 Вызов внешнего действия
	/*
	select 'email' type,   -- email, sms, notification, clearcache
    	'ru@rudensoft.ru' [to], 'sub1' subject, 'bodyXXX'+@itemIDs body,   ---EMAIL
    	'Text 1' msg, '723429234' [number],   												--- SMS
        '' prefix,																				--CLEAR CACHE
		'text1' text , 'ru@rudensoft.ru' [to], 'ticketExecutor' typeCode, 'http///' url, 'add111' additional -- notification
	*/

END


На выходе: 
SELECT 1 - Result, Msg, Info, RedirectUrl, RefreshContainer. Поле Info  - эта информация будет выводиться в диалоговом окне после выполнения операции. RefreshContainer задает селектор контейнера, в котором необходимо обновить компоненты.
SELECT 2 -  вызовы внешних действий (почта, смс, уведомление и т.д.). См. вызов внешних действий.

Примечание:
Если вы планируете использоать формы для обработки выбранных строк:
Кнопка модальной формы (as-form-modal) добавляется в groupOperationsToolbar для таблицы,
в data-itemID кнопки автоматически при простановке галочек попадают itemID строк через запятую, например "123,456,789".
Если указано RedirectUrl, то после успешного выполнения операции будет переход за указанный URL.

JS коллбеки (callbacks) для Таблицы 

Вы можете вызвать JS коллбек после некоторых событий в таблицы 

  • getItems - вызывается после показа данных таблицы
  • update -вызывается после обновления поля
  • create - создание элемента 
  • delete - вызывается после удаления строки

Примеры: 

$(function(){
  as.crud2.callbacks["code1_getItems"]=function(tableOptions){
  }
  as.crud2.callbacks["code1_update"]=function(el, newValue, tableOptions){
  }
  as.crud2.callbacks["code1_create"]=function(params,data){
  }
  as.crud2.callbacks["code1_delete"]=function(params,data){
  }
});

где code1 - это код таблицы

Дополнительные режимы компонента Таблица

Платформа Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки

Это быстрое внесение изменений

по ходу эксплуатации программы

Это современный интерфейс

полная адаптация под мобильные устройства

Бесплатное обучение разработке на Falcon Space

Вы можете разрабатывать самостоятельно или сотрудничать с нами в плане веб-разработки на платформе Falcon Space.
Примечание