此分页控件是采用后台存储过程分页,每次只取一页的数据。当然,物不尽美,同样数据量很大的时候,也会增加数据库的负担,因每次翻页的时候,都要与数据库进行交互!
一、存储过程
CREATE PROCEDURE [dbo].[PageData_P]
@sqlstr nvarchar(3500), --SQL字符串
@curpage int, --第N页
@pagesize int --每页行数
AS
begin

set nocount on
declare @P1 int, --P1是游标的id
@rowcount int, @pagecount int
SET @sqlstr = RTRIM(@sqlstr)
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
set @pagecount = ceiling(1.0*@rowcount/@pagesize)
if @curpage<=1
set @curpage =1
if @curpage>@pagecount
set @curpage=@pagecount
select @rowcount as Total, @pagecount as PageCount,@curpage as CurPage
set @curpage=(@curpage-1)*@pagesize+1
exec sp_cursorfetch @P1,16,@curpage,@pagesize
exec sp_cursorclose @P1
end
GO
二、在项目中新增一用户控件,命名为Pager.ascx
1、页面代码为:
![]()
>
2、CS代码部分:
namespace MyLibrary.UserControl
}
三、用法与事例
![]()
#endregion
相关文章: