SaveField - сохранение одиночного поля на форме

SaveField - хранимая процедура сохранения одиночного поля. 

Процедура будет вызываться при изменении полей, для которых в GetItem процедуре установлен параметр edt_code1 = 1: 

-- в GetItem формы 
-- SELECT 1
select col1, 1 edt_col1 from table1

Пример процедуры SaveField: 

CREATE PROCEDURE [dbo].[fm_metric_saveEditableField]
  @pk nvarchar(128),	  -- id for item
  @fieldCode nvarchar(64), -- form field 
@value nvarchar(max),	-- field value
  @username nvarchar(256) -- current user
AS BEGIN

  if(@fieldCode='XXXXXXXXXXXXXXXXXXXXX') begin
    update as_categories set typeCode = @value where id = @pk
    select 1 Result, '' Msg return
   end
  -- ...
  --SELECT 1 Result,Msg select 0 Result, 'Не найден код сущности' Msg
  -- SELECT 2 Внешние действия (notification, email и т.д.)

END

На входе:

Возвращает SELECT 1 (Result, Msg) и SELECT 2 (Внешние действия)

SELECT 1 

Также в процедуру можно передавать параметр @parameters типа ExtendedDictionaryParameter для передачи спец параметров (langID и falconGuid).

 

Форма с редактированием по отдельным полям (мгновенное сохранение полей, editable поля).

Можно сделать форму, где каждое поле будет сохраняться отдельно.

Для этого необходимо сделать следующее:

  1. В GetItem установить какие поля будут редактируемые, для этого добавляем в SELECT 1 выходные колонки вида 1 edt_{colName} (тем самым эти колонки будут реагировать на изменения и вызывать сохранение этих полей).
  2. Реализовать процедуру SaveField (сохранение отдельных полей формы).
  3. Кнопку Сохранить либо скрыть через CSS, либо использовать кастомную разметку формы и не вставлять кнопку в разметку.  

Примечание:

1.  Данный режим сохранения подходит для полей ввода, галочек, радиопереключателей, textarea, выбора из списка. Режим не работает для набора галочек и для сложных полей типа Code Editor.

2. Если вам необходимо установить вывод сообщения после успешного сохранения поля, то используйте в процедуре формы GetItem в SELECT 2 параметр EditableSuccessMessage (строка).

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