Операции в таблице - на строку, групповые операции

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

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

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

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

  1. код - используется для построения имен хранимых процедур
  2. название - выводится в таблице
  3. иконка - иконка Font Awesome (подобрать нужную иконку вы можете в разделе  Статическое меню), например, fa fa-bars
  4. текст подтверждения - если задан текст, то перед выполнением операции будет запрашиваться подтверждение операции с указанным текстом.  Подтверждение не запрашивается, если кастомная кнопка. При кастомной кнопке нужно в явном виде указывать  data-confirmtext="Подтвердите свой выбор".
  5. сообщение - сообщение об успешном выполнении операции при успехе
  6. Скрыть строку после выполнения операции - если ДА, то скрываем строку, для которой была вызвана операция
    (действует только для построчных операций)
  7. Перезапуск страницы после выполнения операции - если ДА, то перезагрузка всей страницы при успешном выполнении. 
  8. Пользователи, Роли - кто имеет доступ на выполнение этих операций
  9. Тип - операция может быть: 
    1. для строки (выводится тогда в строке), 
    2. просто в тулбаре (кнопка вверху таблицы)
    3. для групповых операций (появляется вверху таблицы, когда выбрана одна или более строк галочками -
      для этого необходимо у таблицы установить настройку Показывать галочки для групповых операций)
ВАЖНО: для групповых операций в SQL процедуре операции передаются id строк таблицы через запятую в @itemIDs. Эти id берутся из колонки с признаком PK (primary key). 
 
Читать про кастомизацию кнопок операций.
 
После настройки операций переходим к созданию хранимых процедур. 

Хранимые процедуры операций таблицы

Действия по кнопкам реализуются через хранимые процедуры следующего вида 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

На входе: 

На выходе: 

Примечание:

Страница-источник на сайте falconspace.ru