此分页控件是采用后台存储过程分页,每次只取一页的数据。当然,物不尽美,同样数据量很大的时候,也会增加数据库的负担,因每次翻页的时候,都要与数据库进行交互!
一、存储过程
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
@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、页面代码为:
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="Pager.ascx.cs" Inherits="IncludeLib.UserControl.Pager" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<asp:Table width="100%" runat="server" id="tblPager" HorizontalAlign="Center">
<asp:TableRow>
<asp:TableCell HorizontalAlign="Center">
<asp:linkbutton id="btnFirst" runat="server" CommandArgument="fist" Font-Size="10">首页</asp:linkbutton> |
<asp:linkbutton id="btnPrev" runat="server" CommandArgument="prev" Font-Size="10">
上一页</asp:linkbutton> |
<asp:linkbutton id="btnNext" runat="server" CommandArgument="next" Font-Size="10">
下一页</asp:linkbutton> |
<asp:linkbutton id="btnLast" runat="server" CommandArgument="last" Font-Size="10">
末页</asp:linkbutton> <FONT size="2">到第
<asp:textbox id="txtGoPage" runat="server" MaxLength="4" AutoPostBack="True" Width="36px">1</asp:textbox>页
</FONT><FONT size="2">第
<asp:label id="lblCurrentIndex" runat="server">1</asp:label>页/共
<asp:label id="lblPageCount" runat="server">0</asp:label>页(
<asp:label id="lblRecordCount" runat="server">0</asp:label>)条 </FONT>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
<asp:Table width="100%" runat="server" id="tblPager" HorizontalAlign="Center">
<asp:TableRow>
<asp:TableCell HorizontalAlign="Center">
<asp:linkbutton id="btnFirst" runat="server" CommandArgument="fist" Font-Size="10">首页</asp:linkbutton> |
<asp:linkbutton id="btnPrev" runat="server" CommandArgument="prev" Font-Size="10">
上一页</asp:linkbutton> |
<asp:linkbutton id="btnNext" runat="server" CommandArgument="next" Font-Size="10">
下一页</asp:linkbutton> |
<asp:linkbutton id="btnLast" runat="server" CommandArgument="last" Font-Size="10">
末页</asp:linkbutton> <FONT size="2">到第
<asp:textbox id="txtGoPage" runat="server" MaxLength="4" AutoPostBack="True" Width="36px">1</asp:textbox>页
</FONT><FONT size="2">第
<asp:label id="lblCurrentIndex" runat="server">1</asp:label>页/共
<asp:label id="lblPageCount" runat="server">0</asp:label>页(
<asp:label id="lblRecordCount" runat="server">0</asp:label>)条 </FONT>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
2、CS代码部分:
namespace MyLibrary.UserControl
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.ComponentModel;
using System.Web.UI;
using System.Collections;
public class Pager : System.Web.UI.UserControl
{
变量定义
数据绑定事件
初始化网页
Web Form 设计工具产生的程序代码
变量定义
第一页
前一页
下一页
最后一页
改变第几页的textbox值
设定link是否可以点选
取得或设定当前页
取得或设定总页数
取得或设定总记录数
改变页码
}
}
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.ComponentModel;
using System.Web.UI;
using System.Collections;
public class Pager : System.Web.UI.UserControl
{
变量定义
数据绑定事件
初始化网页
Web Form 设计工具产生的程序代码
变量定义
第一页
前一页
下一页
最后一页
改变第几页的textbox值
设定link是否可以点选
取得或设定当前页
取得或设定总页数
取得或设定总记录数
改变页码
}
}
三、用法与事例
使用说明--举例