Poti de asemenea sa folosesti o procedura SQL care sa realizeze "paginare" - sa "intoarca" un numar de inregistrari in functie de numarul si dimensiunea "paginii". In procedura poti folosi fie CTE fie de exemplu un tabel temporar / variabila tabel. Mai jos ai un exemplu cu CTE:
DECLARE
@PageNumber int, @PageSize int
SET
@pageNumber = 1
SET
@PageSize = 5;
WITH
c(ProductID, [Name], RowNum)
AS( SELECT p.ProductID,
p
.[Name],
Row_Number() OVER(ORDER BY p.[Name])
FROM dbo.Product AS p WITH (NOLOCK)
)
SELECT c.ProductID, c.[Name], c.RowNum FROM c
WHERE RowNum BETWEEN (@PageNumber - 1 )*@PageSize + 1
AND @PageNumber*@PageSize
Ramane sa "convingi" sursa gridului (SqlDataSource, ObjectDataSource...) sa foloseasca parametrii @PageNumber si @PageSize. Spre rusinea mea nu sunt foarte "dexter" in aceasta arie...