روش مناسب تر:
--region [dbo].[Sample_Select_Page]
------------------------------------------------------------------------------------------------------------------------
-- Generated By: Hossein using CodeSmith 5.0.0.0
-- Template: SQL.cst
-- Procedure Name: [dbo].[Sample_Select_Page]
-- Date Generated: الاربعاء, اكتوبر 13, 2010
------------------------------------------------------------------------------------------------------------------------
Create PROCEDURE [dbo].[Sample_Select_Page]
@PageIndex int,
@PageSize int
AS
SET NOCOUNT ON
SELECT
[SampleID],
[SampleTitle],
[SampleDescription]
[CreatedDate],
[LastModifided]
FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY [SampleID]) AS RowNum FROM [dbo].[Sample])
AS e
--WHERE RowNum BETWEEN ((@PageIndex * @PageSize) - (@PageSize - 1)) AND (@PageIndex * @PageSize)
WHERE RowNum BETWEEN ((@PageIndex * @PageSize) + 1) AND ((@PageIndex + 1) * @PageSize)
--endregion
جناب راد در GridView ورژن 7 برای Paging از این روش استفاده کرده بودند که روش مناسبی هست.
و برای گرفتن یک Range خاص(مثلا از 1200 تا 1230)
--region [dbo].[Sample_Select_Range]
------------------------------------------------------------------------------------------------------------------------
-- Generated By: Hossein using CodeSmith 5.0.0.0
-- Template: SQL.cst
-- Procedure Name: [dbo].[Sample_Select_Range]
-- Date Generated: الاربعاء, اكتوبر 13, 2010
------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE [dbo].[Sample_Select_Range]
@FromIndex int,
@ToIndex int
AS
SET NOCOUNT ON
SELECT
[SampleID],
[SampleTitle],
[SampleDesxription]
FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY ID) AS RowNum FROM [dbo].[Sample])
AS e
WHERE RowNum BETWEEN @FromIndex AND @ToIndex
--endregion
GO