В качестве хорошей практики не следует привязывать все записи, извлеченные из запроса, непосредственно к элементу управления, такому как представление сетки, если, конечно, вы абсолютно не уверены, что число записей невелико.
Это потому, что когда количество записей огромно, страница загружается медленнее, поскольку привязка занимает много времени.
Один из подходов, который я использовал в моем предыдущем проекте, - это выборка общего количества записей, затронутых запросом. (Допустим, их 1000).
Затем я делю количество записей на размер страницы (скажем, 100).
Так что теперь я предоставляю нумерацию страниц (1-10).
Когда пользователь нажимает на определенную страницу, я выбираю записи, относящиеся к этой странице, используя функцию ROW_NUMBER()
в SQL.
Запрос будет выглядеть примерно так:
SELECT x, y, ROW_NUMBER() OVER(ORDER BY z asc) AS 'RowNumber'
FROM t WHERE RowNumber > lowerlimit and RowNumber < upperlimit.
Нижний и верхний пределы рассчитываются с использованием номера текущей страницы и размера страницы.
Надеюсь, это ответит на ваш вопрос