首先我们创建一个Web用户控件
在 .ascx.cs里面写我们对页码条的控制,相当于一个类,继承与UserControl类
public partial class PageData : System.Web.UI.UserControl
{
public string strHtml;
private int currentPage;//当前页
public int CurrentPage
{
get { return currentPage; }
set { currentPage = value; }
}
private int currentPageCount;//总页数
public int CurrentPageCount
{
get { return currentPageCount; }
set { currentPageCount = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (CurrentPageCount <= 1) //如果只有一页,不现实分页条
{
return;
}
int startPage = CurrentPage - 3; //这里保持当前页在页码条中间
if (startPage <= 1)
{
startPage = 1;
}
int endPage = startPage + 6; //这里保持当前页在页码条中间
if (endPage > CurrentPageCount)
{
endPage = CurrentPageCount;
startPage = endPage - 6;
if (startPage <= 1)
{
startPage = 1;
}
}
StringBuilder sb = new StringBuilder();
sb.AppendFormat(" <a href=?page={0}>首页</a> ", 1);
if (currentPage > 1)
{
sb.AppendFormat(" <a href=?page={0}>上一页</a> ", CurrentPage - 1);
}
else
{
sb.AppendFormat(" <a href=javascript:void(0)>上一页</a> ");
}
for (int i = startPage; i <= endPage; i++)
{
if (i == CurrentPage)
{
sb.Append(" " + i + " ");
}
else
{
sb.AppendFormat(" <a href=?page={0}>[" + i + "]</a> ", i);
}
}
if (currentPage < CurrentPageCount)
{
sb.AppendFormat(" <a href=?page={0}>下一页</a> ", CurrentPage + 1);
}
else
{
sb.AppendFormat(" <a href=javascript:void(0)>下一页</a> ");
}
sb.AppendFormat(" <a href=?page={0}>末页</a> ", CurrentPageCount);
strHtml = sb.ToString();
}
}
完成之后,在.ascx里面写我们的空间容器,相当于一个html页面
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="PageData.ascx.cs" Inherits="Asp.net项目.MyControl.PageData" %>
<div id="pageDiv"><%=strHtml %></div>
cs里面的strHtml输出到容器里,这里也可以用css来美化~
我们在web窗体里面用的时候直接像托控件一样拖过去
<uc1:PageData runat="server" ID="PageData" />
后台代码:
public partial class WebForm1 : System.Web.UI.Page
{
public List<Book> list;
protected void Page_Load(object sender, EventArgs e)
{
int pageIndex;
if (Request["page"] != null)
{
pageIndex = Convert.ToInt32(Request["page"]);
}
else
{
pageIndex = 1;
}
int maximumRows = 9;
OnSaleBooksBLL bll = new OnSaleBooksBLL();
//---------------这里是我们自定义的分页控件-----------------
//可以直接点出来,初始化它的属性...
PageData.CurrentPage = pageIndex;
PageData.CurrentPageCount = (bll.GetCount() + maximumRows - 1) / maximumRows;
//-----------------------------------
int startRowIndex = (pageIndex - 1) * maximumRows + 1;
list = bll.GetModelList_Page(startRowIndex, maximumRows);
}
末页