现在的位置: 首页 > 综合 > 正文

写自己的分页控件

2013年06月13日 ⁄ 综合 ⁄ 共 2117字 ⁄ 字号 评论关闭

首先我们创建一个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);

        }


最后看效果
它会保持当前页在中间显示

    末页

抱歉!评论已关闭.