Pager 精简的分页控件

建立一个用户控件:Pager.ascx,然后后台代码为:

 

  public partial class Pager : System.Web.UI.UserControl
    {
        private string _UrlFormat;
        private int _PageSize = 10;
        private int _RecordCount;
        private int _PageCount = 5;
 
        /**//// <summary>
        /// 连接格式
        /// </summary>
        public string UrlFormat
        {
            get
            {
                return _UrlFormat;
            }
            set
            {
                _UrlFormat = value;
            }
        }
 
        /**//// <summary>
        /// 页长度
 
 
        /// </summary>
        public int PageSize
        {
            get
            {
                return _PageSize;
            }
            set
            {
                _PageSize = value;
            }
        }
 
        /**//// <summary>
        /// 当前页码
        /// </summary>
        public int PageIndex
        {
            get
            {
                string Pageindex = HttpContext.Current.Request.QueryString["i"];
                if (Pageindex != null)
                {
                    return int.Parse(Pageindex);
                }
                return 1;
            }
        }
 
        /**//// <summary>
        /// 总记录数
        /// </summary>
        public int RecordCount
        {
            get
            {
                return _RecordCount;
            }
            set
            {
                _RecordCount = value;
            }
        }
 
        /**//// <summary>
        /// 两边显示个数
        /// </summary>
        public int PageCount
        {
            get
            {
                return _PageCount;
            }
            set
            {
                _PageCount = value;
            }
        }
 
        protected override void Render(HtmlTextWriter writer)
        {
            if (RecordCount == 0)
                return;
            int SumPage = (RecordCount + PageSize - 1) / PageSize;
 
            int start = PageIndex - PageCount;
            int end = PageIndex + PageCount;
 
            //以PageIndex为中心,前后个显示Page个页码导航
 
 
            if (SumPage > (PageCount * 2 + 1))
            {
               if (start < 1)
               {
                   start = 1;
                   end = start + 10;
               }
               else if (end > SumPage)
               {
                   start = SumPage - 10;
                   end = SumPage;
               }
           }
           else
           {
               start = 1;
               end = SumPage;
           }

 

           string tmp = "<a href=\"" + UrlFormat + "\">[{0}]</a>";
           StringBuilder sb = new StringBuilder(string.Format("页次:{0}/{1}  每页:{2}  共计:{3} 条 ", PageIndex, SumPage, PageSize, RecordCount));
            if (PageIndex > 1)
            {
                sb.Append(string.Format("<a href=\"" + UrlFormat + "\">首页</a> ", 1));
                sb.Append(string.Format(" <a href=\"" + UrlFormat + "\">上一页</a> ", PageIndex - 1));
            }
            for (int i = start; i <= end; i++)
            {
                if (i == PageIndex)
                {
                    sb.Append(" <strong>" + PageIndex.ToString() + "</strong> ");
                }
                else
                {
                    sb.Append(string.Format(tmp, i));
                }
                sb.Append("&nbsp;");
            }
            if (PageIndex < SumPage)
            {
                sb.Append(string.Format(" <a href=\"" + UrlFormat + "\">下一页</a> ", PageIndex + 1));
                sb.Append(string.Format(" <a href=\"" + UrlFormat + "\">尾页</a>", SumPage));
            }
            writer.Write(sb.ToString());
        }
        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }

 

 

使用方法:

把Pager拖拽到页面上,进入页面后台代码,设置如下:

 

Pager1.UrlFormat = "?i={0}";//分页格式
int recordcount, pagecount;
Repeater1.DataSource = 数据源;
Repeater1.DataBind();
Pager1.RecordCount = recordcount;
posted @ 2008-09-07 12:29  问天何必  阅读(309)  评论(0编辑  收藏  举报
性感美女 无限影视网