Сохранение фильтров таблицы - запоминание прежнего выбора фильтров

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

Для этого мы:

  • создали две одинаковые таблицы с полями, фильтрами и сортировкой
  • в GetItem в SELECT3 для первой задали параметр DisableSaveState равным 0 (по умолчанию), включив сохранение параметров.
  • в GetItem в SELECT3 для второй задали параметр DisableSaveState равным 1, отключив сохранение параметров.
  • действие будет видно, если вы измените фильтры/сортировку в каждой из них и обновите страницу
CREATE PROCEDURE [dbo].[crud_watch_nostate0_getItems]
	@filters CRUDFilterParameter READONLY,  
	@sort sql_variant,
	@direction nvarchar(8),
	@page int,
	@pageSize int,
	@username nvarchar(32)
AS
BEGIN
	declare @filterName nvarchar(max); select @filterName = Value from @filters where [Key] = 'name'
	declare @filterValue int; select @filterValue = try_cast(Value as int) from @filters where [Key] = 'value'
	
    declare @ids table (id int)
    insert @ids 
    select id
	from tst_numfield 
	where (isnull(@filterName, '')='' or name like '%'+@filterName+'%')
      and (isnull(@filterValue, 0)=0 or value=@filterValue)

    
	-- SELECT 1
	select *
	from tst_numfield 
	where id in(select id from @ids)
	order by  
		case when @sort = 'name' and @direction = 'down' then name end desc,
		case when @sort = 'name' and @direction = 'up' then name end asc,
   		case when @sort = 'value' and @direction = 'down' then value end desc,
		case when @sort = 'value' and @direction = 'up' then value end asc
	OFFSET @PageSize * (@Page - 1) ROWS
	FETCH NEXT @PageSize ROWS ONLY;
	
	-- SELECT 2
	select count(*) from @ids	

	-- SELECT 3
	Select  0 DisableSaveState 
END
CREATE PROCEDURE [dbo].[crud_watch_nostate2_getItems]
	@filters CRUDFilterParameter READONLY,  
	@sort sql_variant,
	@direction nvarchar(8),
	@page int,
	@pageSize int,
	@username nvarchar(32)
AS
BEGIN
	declare @filterName nvarchar(max); select @filterName = Value from @filters where [Key] = 'name'
	declare @filterValue int; select @filterValue = try_cast(Value as int) from @filters where [Key] = 'value'
	
    declare @ids table (id int)
    insert @ids 
    select id
	from tst_numfield 
	where (isnull(@filterName, '')='' or name like '%'+@filterName+'%')
      and (isnull(@filterValue, 0)=0 or value=@filterValue)

    
	-- SELECT 1
	select *
	from tst_numfield 
	where id in(select id from @ids)
	order by  
		case when @sort = 'name' and @direction = 'down' then name end desc,
		case when @sort = 'name' and @direction = 'up' then name end asc,
   		case when @sort = 'value' and @direction = 'down' then value end desc,
		case when @sort = 'value' and @direction = 'up' then value end asc
	OFFSET @PageSize * (@Page - 1) ROWS
	FETCH NEXT @PageSize ROWS ONLY;
	
	-- SELECT 2
	select count(*) from @ids	

	-- SELECT 3
	Select  1 DisableSaveState 
END

Другие модули

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

SQL-инструмент для создания личных кабинетов на сайте

Суть подхода и история создания Falcon Space

Платформа Falcon Space

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

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

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

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

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

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