Поле Список поиска значения (autocomplete, search-select)

В настройках столбца формы указываем Список-поиск select-search.

В GetItem поле извлекается как название сущности(text), а не ключ (value).

Реализуем процедуру вида fm_formCode_fieldCode_dict (редактируем через интерфейс).

CREATE PROCEDURE [dbo].[fm_isp_region_dict]
  @username nvarchar(256),
  @itemID nvarchar(128),
  @q nvarchar(128) = ''

AS
BEGIN
    if(isnull(@q, '')='') begin  -- (для обычного select)
        select ' Не выбрано ' Text, 0 Value, 0 Selected
        union
        SELECT gr.name Text, gr.id Value, 0 Selected
        FROM dbo.as_geo_regions gr        
        order by Text
    end
    else begin
        select ' Не выбрано ' Text, 0 Id, getdate() date, '' [desc], 0 type
        union
        SELECT gr.name Text, gr.id id, getdate() date, '' [desc], 0 type
        FROM dbo.as_geo_regions gr
    where name like '%'+@q+'%'
    order by Text
    end
END

Важное отличие - сюда дополнительно передается необязальный параметр @q nvarchar(128)=’’

ВНИМАНИЕ! Здесь модель выходного SELECT в dict процедуре отличается от стандартной - вместо text, value используется text,id,date, desc, type.

В сохранении поля SaveItem нам передается название сущности (а не внешний ключ число):

CREATE PROCEDURE [dbo].[fm_profile_saveItem]
   @username nvarchar(256),
   @itemID  nvarchar(256),
   @fieldemail nvarchar(256) = '',
   @fieldphone nvarchar(256) = '',
   @fieldcity nvarchar(256) = '' -- на входе текст а не ключ-число
AS
BEGIN
    update as_users
    set
        email=@fieldemail,
        phone=@fieldphone,
        regionID=(select top 1 id from as_geo_regions where name=@fieldcity)
    select 1 Result, 'Сохранено' Msg
END

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

Поле select-search можно также использовать в CheckField (приходит текст выбранного элемента, а не value), а также в сохранении одиночного поля при  1 edt_x1 в SELECT2 GetItem формы (приходит в SaveField значение value, а не текст выбранного элемента).

Демостенд с полем select-search - https://demo.web-automation.ru/list/watch/sokhranenie-polya-select-search---1157

 

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