Суть - подгрузка порции данных при скроллинге. К примеру новости - пользователь крутит вниз экран и при достижении определенной позиции в контейнер погружается очередная порция данных.
Демостенд - https://demo.falconspace.ru/list/watch/paginaciya-dannykh-po-skrollingu---1179
Используем следующую разметку:
<div class="as-scrollLoad bg-warning" data-code="articles" data-itemid="123">
Изначально некоторые данные есть (например, статичный контент под SEO...)
</div>
На странице одновременно может быть только 1 такой элемент.
Параметры:
При достижении низа контента в элементе запускается подгрузка данных через процедуру request с фиксированным названием request_scroll_load.
CREATE PROCEDURE [dbo].[request_scroll_load]
@parameters ExtendedDictionaryParameter READONLY,
@username nvarchar(32)
AS
BEGIN
declare @code nvarchar(max) = isnull((select value2 from
@parameters where [Key] = 'code'), '')
declare @itemID nvarchar(max) = isnull((select value2 from
@parameters where [Key] = 'itemID'), '')
declare @page int = isnull((select try_cast(value2 as int) from
@parameters where [Key] = 'page'), '')
declare @s nvarchar(max) = ''
declare @pageSize int = 10
if(@code='articles') begin
select @s = @s + '' + cast(num as nvarchar) + '. '+ isnull(text, '') + ''
from (
select
ROW_NUMBER() over (order by ord) num,
url text
from as_menu
order by ord
OFFSET @PageSize * (@Page - 1) ROWS
FETCH NEXT @PageSize ROWS ONLY) t1
select 1 Result, @s Msg
end
-- SELECT 1 Msg, Result
select '' Msg, 0 Result
-- SELECT 2 Основные данные в виде произвольной таблицы
-- SELECT 3 Внешние действия
END
На вход нам приходят page, code, itemID, которые задают какие данные выдать (pageSize определяется в самой процедуре).
На выходе модель Result, Msg: