Универсальная кнопка действия as_submit

Иногда есть потребность сделать 1 кнопку для выполнения некоего действия в системе. 

Для этого можно использовать модальные формы (as-form-modal), но при этом будет выводиться дополнительное окно + необходимо создавать форму. 

Более легкий вариант - использование кнопки as-submit (основан на механизме request js). 

Разметка сниппета: 

<a href="#" class="as-submit" data-code="t1" data-itemid="123" data-confirmtext="Вы уверены?" data-selector=".tooltip-toggle:first" data-needvalue="Укажите ФИО">Link1</a>

Параметры: 

На сервере реализуем хранимую процедуру request вида request_submit_{code}

Пример: 

create OR ALTER PROCEDURE [dbo].[request_submit_t1]
	@parameters ExtendedDictionaryParameter READONLY,
	@username nvarchar(32)
AS
BEGIN
	declare @itemID nvarchar(max) = (select value2 from @parameters where [key]='itemID')
    declare @value nvarchar(max) = (select value2 from @parameters where [key]='value')
    
   -- SELECT 1 Msg, Result
	select 'Params: '+ isnull(@itemID, 'xx') + ' - ' + isnull(@value, 'xx')  Msg, 1 Result

    -- SELECT 2 Основные данные в виде произвольной таблицы
   select 1  
   -- SELECT 3 Внешние действия

END

На входе из @parameters извлекаем itemID и value (значение контейнера или элемента управления из параметра selector разметки сниппета). 

На выходе: 

SELECT 1

SELECT 2 - некие данные в свободном виде. Их можно использовать в JS коллбеке операции. 

SELECT 3 - внешние действия. См. про внешние действия.

Если нужна кастом обработка результата операции, то пробуем использовать actions. Если этого недостаточно, то делаем JS коллбек вида: 

as.callbacks["submit_t1"]=function(btn, data){

}

где btn - исходная кнопка, data - данные от сервера после операции, t1 - это код(data-code) исходной кнопки.

 

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