Фильтр выбор с поиском по базе в таблице (select-search)

Фильтр с поиском select-search

Ставим у колонки тип фильтра select-search (название Search) и создаем процедуру (код колонки в примере - f1): 

CREATE PROCEDURE [dbo].[crud_watch_table_selectsearch_f1_search]
	@q nvarchar(32),
	@itemID nvarchar(32),
	@username nvarchar(32)
as
begin
	select -1 id, 'Сбросить выбор' text, '' [desc], '#ccc'color  , 0 ord   
	union 
    select top 10  id id, name text, cast(price as nvarchar) [desc], '#daa'color  , id ord  
	from tst_products
    where name like '%'+@q+'%'
    order by ord
end

Входные параметры:

  • q - что ввел пользователь
  • itemID - itemID от таблицы
  • username - текущий пользователь

Выходная модель: id (не равен нулю), text, desc, color

В GetItems приходит текстовое значение выбраного поля: 

CREATE PROCEDURE [dbo].[crud_watch_table_selectsearch_getItems]
	@filters CRUDFilterParameter READONLY,  
	@sort sql_variant,
	@direction nvarchar(8),
	@page int,
	@pageSize int,
	@username nvarchar(32)
AS
BEGIN
	declare   @ids TABLE (id int)

	-- filters...
	declare @f1 nvarchar(128) = isnull((select Value from @filters where [Key] = 'f1'), '')
	print @f1
    if(@f1='Сбросить выбор') begin
    	set @f1 = ''
    end
    print @f1
   
	insert into @ids
	select id
	from tst_products
   where @f1 ='' or @f1<>'' and name = @f1
	
	-- SELECT 1
	select id id,
        isnull(name, '') name,
        isnull(price, 0)price,
        isnull(art, '') art,
        isnull(format(created, 'dd.MM.yyyy'), '01.01.1900') created
	from tst_products 
	where id in (select id from @ids)
	order by  id
	OFFSET @PageSize * (@Page - 1) ROWS
	FETCH NEXT @PageSize ROWS ONLY;
	
	-- SELECT 2
	select count(*) from @ids	

	-- SELECT 3
	Select 1 
END

Обратите внимание на обработку момента с пунктом Сбросить выбор - если этого не сделать, то пользователь не сможет вернуть фильтр в исходное невыбранное значение. 

Насколько полезна эта возможность?

Последние обновления

Форма генерации счета

Файлы и документы 10.01.2025

Платформа Falcon Space

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

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

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

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

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

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

Сайт использует Cookie. Правила конфиденциальности OK