日期:2014-05-17  浏览次数:20894 次

C#分页方法
分页用SQL实现还是C#代码中实现比较好?给个建议,最后带上代码,越简单越好,谢谢了!~

------解决方案--------------------
用存储过程分页吧~~~~ 

select*from(select row_number() over(order by id) as row,*from dbo.Person where isDel=0)  as tt where row between (@pageIndex-1)*@pageSize+1 and @pageIndex*@pageSize



------解决方案--------------------
存储过程分页
------解决方案--------------------
存储过程
CREATE PROCEDURE dbo.CreateSimple
( @PageIndex int,
  @PageSize int)
AS
BEGIN
 --定义三个变量:
 -- @PageLowerBound :所取出记录的下限.
 -- @PageUpperBound: 所要取出记录的上限.
 -- @TotalRecords: 返回记录总数,主要用于页面的计算.
 DECLARE @PageLowerBound int
 DECLARE @PageUpperBound int
 DECLARE @TotalRecords int
 --计算上下限的值.
 SET @PageLowerBound=@PageIndex * @PageSize
 SET @PageUpperBound=@PageLowerBound+@PageSize-1
--创建临时表:
--IndexId是标识,自动增长1;
--SimpleId由数据表[Simple]填充;
 CREATE TABLE #PageIndexForSimple
 (
  IndexId int identity(1,1) NOT NULL,
  SimpleId int
 )
--填充临时表
  INSERT INTO #PageIndexForSimple(SimpleId)
  SELECT s.[SimpleId]
  FROM [Simple] s 
  --取得记录总数,其实影响行数就是记录总数
  SELECT @TotalRecords=@@ROWCOUNT
  SELECT s.*
  FROM [Simple] s,#PageIndexForSimple p
 WHERE s.[SimpleId]=p.[SimpleId]
           AND p.[IndexId]>=@PageLowerBound
          AND P.[IndexId]<=@PageUpperBound
  ORDER BY s.[Simple] 
   --返回记录总数.
   RETURE @TotalRecords
END