Asp.Net自定义控件分页功能

来源:互联网 发布:做淘宝猝死 编辑:程序博客网 时间:2024/06/05 04:53

前台页面

<%@ Register Src="~/Controls/Pages.ascx" TagPrefix="uc1" TagName="pagers"%>

 

   <div class="pageclass">

    <uc1:pagers ID="pages1" PageSize="10" runat="server" />

    </div>

 

 

样式

<style type="text/css">
   
/*分页*/
.pageclass{width: 100%;margin-top:8px;}
.pageclass ul{float:left;}
.pageclass li{color: #C1DEF7; float: left; background: #C1DEF7; border: 1px solid #8BC5F7; margin-right: 5px; display:inline; font-size:13px; }
.pageclass a{color: #3D85C4; padding: 0em 0.4em 0em 0.4em;  line-height: 20px; display: block; }
.pageclass a:hover, .pageclass li.on a{ color: white; font-weight: bolder; background: #759CBF; text-decoration: none; }

.pageinput{border:1px solid #CCCCCC;width:25px; height:13px;}
.pagecheck a{color:white; background-color:#6C9BC4;}

</style>

 

 前台代码

 //@TableName nvarchar(100),--表名
                //@Fileds nvarchar(300),--字段(id,name)
                //@Pagesize int ,--每页大小
                //@OrderByFiled nvarchar(50),--排序字段
                //@CurrentPagesize int,--当前页码
                //@Wheres nvarchar(200),--条件
                //@RecordCount int output --输出总记录

                SqlParameter[] prams = new SqlParameter[]{
                          new SqlParameter("@TableName",SqlDbType.NVarChar),
                          new SqlParameter("@Fileds",SqlDbType.NVarChar),
                          new SqlParameter("@Pagesize",SqlDbType.Int),
                          new SqlParameter("@OrderByFiled",SqlDbType.NVarChar),
                          new SqlParameter("@CurrentPagesize",SqlDbType.Int),
                          new SqlParameter("@Wheres",SqlDbType.NVarChar),
                          new SqlParameter("@RecordCount",SqlDbType.Int)
              };
                prams[0].Value = "a";
                prams[1].Value = "*";
                prams[2].Value = pages1.PageSize;
                prams[3].Value = "id";
                prams[4].Value = pages1.PageIndex;
                prams[5].Value = "1=1";
                prams[6].Direction = ParameterDirection.Output;


                gridview1.DataSource = sql.ExecuteDataTable("AspNetPage", prams);
                gridview1.DataBind();

 

                pages1.RecordCount = int.Parse(prams[6].Value.ToString());
                pages1.UrlFormat = "?i={0}";

 

 

 

 

 

 

 

 

自定义控件代码

 

  public partial class Pages : System.Web.UI.UserControl
    {
        private string urlFormat;
        private int pageSize = 30;
        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 = "<li><a href=/"" + UrlFormat + "/">{0}</a></li>";
            StringBuilder sb = new StringBuilder(string.Format("<ul><li><a>页次:{0}/{1}  每页:{2} 条 共计:{3} 条</a></li>", PageIndex, SumPage, pageSize, recordCount));
            if (PageIndex > 1)
            {
                sb.Append(string.Format("<li><a href=/"" + urlFormat + "/">首页</a></li>", 1));
                sb.Append(string.Format("<li><a href=/"" + urlFormat + "/">上一页</a></li>", PageIndex - 1));
            }
            for (int i = start; i <= end; i++)
            {
                if (i == PageIndex)
                {
                    sb.Append("<li class=/"pagecheck/"><a href=/"#/">" + PageIndex.ToString() + "</a></li>");
                }
                else
                {
                    sb.Append(string.Format(tmp, i));
                }
            }
            if (PageIndex < SumPage)
            {
                sb.Append(string.Format("<li><a href=/"" + urlFormat + "/">下一页</a></li>", PageIndex + 1));
                sb.Append(string.Format("<li><a href=/"" + urlFormat + "/">尾页</a></li>", SumPage));
            }
            writer.Write(sb.ToString());
        }
        protected void PageLoad(object sender, EventArgs e)
        {

        }
    }

 

 

原创粉丝点击