ASP.NET分页的处理方式

类别:Asp 点击:0 评论:0 推荐:

参照了多位高手的文章,主要觉得最重要是分页最好用存储过程来处理,返回当前页数据的DataSet。
存储过程如下:
CREATE PROCEDURE dbo.sp_info_page2
(
@pagesize  int,
@currpage  int
)
as
begin
DECLARE  @sqlText AS nvarchar(4000)
if (@currpage=1) set @sqlText='select top '+CAST((@pagesize) as varchar(30))+' * FROM TBL_INFO ORDER BY INFOID DESC'
ELSE
 set @sqlText='select top '+CAST((@pagesize) as varchar(30))+' *  FROM tbl_info
  WHERE (infoid<(SELECT MIN(infoid)
   FROM (SELECT TOP '+CAST((@pagesize*(@currpage-1)) as varchar(30))+' infoid
   FROM tbl_info
   ORDER BY infoid desc) AS T)) ORDER BY infoid desc'

 EXEC(@sqlText)
end
GO

其中主要思路参考http://blog.csdn.net/lihonggen0/archive/2004/09/14/103511.aspx 的第二种方案。
考虑到大多数内容都需要对ID字段进行倒序,所以将存储过程进行了一定的修改。


在通过存储过程返回的DataSet之后,你只需要控制分页标示符就可以了。
首先读取整个整个数据的条目总和,取得总数,再按照页面大小获得页面分页导航字符串。
strPageControl="<a href=info.aspx?currpage=1>首页</a>  ";
     if (intCurrPageNo!=1) strPageControl=strPageControl+"<a href=info.aspx?currpage="+Convert.ToString(intCurrPageNo-1)+">上一页</a>  ";
     else strPageControl=strPageControl+"上一页  ";
     if (intCurrPageNo!=intPageCount)
     {
      strPageControl=strPageControl+"<a href=info.aspx?currpage="+Convert.ToString(intCurrPageNo+1)+">下一页</a>  ";
      strPageControl=strPageControl+"<a href=info.aspx?currpage="+Convert.ToString(intPageCount)+">末页</a>";
     }
     else
     {
      strPageControl=strPageControl+"下一页  末页";
     }

请各位高手执教。

本文地址:http://com.8s8s.com/it/it7399.htm