zoukankan      html  css  js  c++  java
  • 重写的一个带分页的repeater

     一. 重写repeater 增加分页的功能 

    效果图:

     

      

    直接贴代码,如果觉得repeater不好的话,把分页的部分提出来:

    代码
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Text;

    namespace Ncuhome.Blog.Controls
    {
        
    public class RepeaterPaged : System.Web.UI.WebControls.Repeater
        {
            
    public RepeaterPaged()
            {

            }
            
    private string _PageLocation;
            
    /// <summary>
            
    /// 分页码的显示地方
            
    /// Top 顶端
            
    /// End 底端
            
    /// TopandEnd 上面下面都有
            
    /// </summary>
            [DefaultValue("End")]
            
    public string PageLocation
            {
                
    get { return _PageLocation; }
                
    set { this._PageLocation = value; }
            }
            
    private string _UrlFormat;
            
    /// <summary>
            
    /// 地址 example"more.aspx?id=1&"
            
    /// </summary>
            public string UrlFormat
            {
                
    get { return _UrlFormat; }
                
    set { _UrlFormat = value; }
            }
            
    private long _Count;
            
    /// <summary>
            
    /// 总数
            
    /// </summary>
            public long Count
            {
                
    get { return _Count; }
                
    set { _Count = value; }
            }
            
    private long _Length;
            
    /// <summary>
            
    /// 每页显示条数
            
    /// </summary>
            public long Length
            {
                
    get { return _Length; }
                
    set { _Length = value; }
            }


            
    protected override void Render(System.Web.UI.HtmlTextWriter writer)
            {
                
    int PageIndex = 1;
                
    if (string.IsNullOrEmpty(Context.Request.QueryString["PageIndex"]))
                {
                    PageIndex 
    = 1;
                }
                
    else
                {
                    
    try
                    {
                        PageIndex 
    = Convert.ToInt32(Context.Request.QueryString["PageIndex"].ToString());
                    }
                    
    catch
                    {
                        PageIndex 
    = 1;
                    }
                }
                
    int PageCount = 1;
                
    if (this.Count % this.Length == 0L)
                    PageCount 
    = Convert.ToInt32(this.Count / this.Length);
                
    else
                    PageCount 
    = Convert.ToInt32(this.Count / this.Length) + 1;


                
    string PageStr = GetPaged(this.UrlFormat, PageIndex, PageCount);
                
    if (this.PageLocation == "Top")
                {
                    writer.Write(PageStr);
                    
    base.Render(writer);
                }
                
    else if (this.PageLocation == "End")
                {
                    
    base.Render(writer);
                    writer.Write(PageStr);
                }
                
    else if (this.PageLocation == "TopandEnd")
                {
                    writer.Write(PageStr);
                    
    base.Render(writer);
                    writer.Write(PageStr);
                }
                
    else
                {
                    
    base.Render(writer);
                    writer.Write(PageStr);
                }

            }

            
    private static string GetPaged(string _UrlFormat, int _PageIndex, int _PageCount)
            {

                
    int pageCount = _PageCount;//总的页数
                int page = _PageIndex;//当前页号
                string UrlFormat = _UrlFormat + "PageIndex=";//url地址

                StringBuilder HtmlString 
    = new StringBuilder();
                
    #region 分页功能

                HtmlString.Append(
    "");//添加css连接
                if (pageCount > 0)
                {
                    HtmlString.Append(
    "<div class=\"page\">");
                    HtmlString.Append(
    "<ul>");
                    HtmlString.Append(
    "<li class=\"long\"><a href=" + UrlFormat + "1>首页</a></li>");
                    
    if (page > 1)
                    {
                        HtmlString.Append(
    "<li  class=\"long\"><a href='" + UrlFormat + "" + Convert.ToString(page - 1+ "'>上一页</a></li>");
                    }
                    
    int i = 1;
                    
    if (pageCount <= 10)
                    {
                        
    for (; i <= pageCount; i++)
                        {
                            
    if (i == page)
                            {
                                HtmlString.Append(
    "<li><font color=red><strong>" + i.ToString() + "</strong></font></li>");
                            }
                            
    else
                            {
                                HtmlString.Append(
    "<li><a href=" + UrlFormat + "" + i.ToString() + ">" + i.ToString() + "</a></li>");
                            }
                        }
                    }
                    
    else
                    {
                        
    if (page <= 3)
                        {
                            
    for (; i <= 9; i++)
                            {
                                
    if (i == page)
                                {
                                    HtmlString.Append(
    "<li><font color=red><strong>" + i.ToString() + "</strong></font></li>");
                                }
                                
    else
                                {
                                    HtmlString.Append(
    "<li><a href=" + UrlFormat + "" + i.ToString() + ">" + i.ToString() + "</a></li>");
                                }
                            }
                            HtmlString.Append(
    "<li>...</li>");
                            
    for (i = pageCount - 2; i <= pageCount; i++)
                            {
                                
    if (i == page)
                                {
                                    HtmlString.Append(
    "<li><font color=red><strong>" + i.ToString() + "</strong></font></li>");
                                }
                                
    else
                                {
                                    HtmlString.Append(
    "<li><a href=" + UrlFormat + "" + i.ToString() + ">" + i.ToString() + "</a></li>");
                                }
                            }
                        }
                        
    else if (page >= pageCount - 2)
                        {
                            
    for (; i <= 3; i++)
                            {
                                
    if (i == page)
                                {
                                    HtmlString.Append(
    "<li><font color=red><strong>" + i.ToString() + "</strong></font></li>");
                                }
                                
    else
                                {
                                    HtmlString.Append(
    "<li><a href=" + UrlFormat + "" + i.ToString() + ">" + i.ToString() + "</a></li>");
                                }
                            }
                            HtmlString.Append(
    "<li>...</li>");
                            
    for (i = pageCount - 4; i <= pageCount; i++)
                            {
                                
    if (i == page)
                                {
                                    HtmlString.Append(
    "<li><font color=red><strong>" + i.ToString() + "</strong></font></li>");
                                }
                                
    else
                                {
                                    HtmlString.Append(
    "<li><a href=" + UrlFormat + "" + i.ToString() + ">" + i.ToString() + "</a></li>");
                                }
                            }
                        }
                        
    else if (page >= 4 && page <= 5)
                        {
                            
    for (; i <= page-1; i++)
                            {
                                HtmlString.Append(
    "<li><a href=" + UrlFormat + "" + i.ToString() + ">" + i.ToString() + "</a></li>");
                            }
                            HtmlString.Append(
    "<li><font color=red><strong>" + i.ToString() + "</strong></font></li>");
                         
                                
    for (i = page + 1; i < page + 3; i++)
                                {
                                    HtmlString.Append(
    "<li><a href=" + UrlFormat + "" + i.ToString() + ">" + i.ToString() + "</a></li>");
                                }
                            HtmlString.Append(
    "<li>...</li>");
                            
    for (i = pageCount - 2; i <= pageCount; i++)
                            {
                                HtmlString.Append(
    "<li><a href=" + UrlFormat + "" + i.ToString() + ">" + i.ToString() + "</a></li>");
                            }
                        }
                        
    else if (page >= pageCount - 4 && page <= pageCount - 3)
                        {
                            
    for (; i <= 3; i++)
                            {
                                HtmlString.Append(
    "<li><a href=" + UrlFormat + "" + i.ToString() + ">" + i.ToString() + "</a></li>");
                            }
                            HtmlString.Append(
    "<li>...</li>");
                            
    for (i = page - 2; i < page; i++)
                            {
                                HtmlString.Append(
    "<li><a href=" + UrlFormat + "" + i.ToString() + ">" + i.ToString() + "</a></li>");
                            }
                            HtmlString.Append(
    "<li><font color=red><strong>" + page.ToString() + "</strong></font></li>");
                            
    for (i = page + 1; i <= pageCount; i++)
                            {
                                HtmlString.Append(
    "<li><a href=" + UrlFormat + "" + i.ToString() + ">" + i.ToString() + "</a></li>");
                            }
                        }
                        
    else
                        {
                            
    for (; i <= 3; i++)
                            {
                                HtmlString.Append(
    "<li><a href=" + UrlFormat + "" + i.ToString() + ">" + i.ToString() + "</a></li>");
                            }
                            HtmlString.Append(
    "<li>...</li>");
                            
    for (i = page - 2; i < page; i++)
                            {
                                HtmlString.Append(
    "<li><a href=" + UrlFormat + "" + i.ToString() + ">" + i.ToString() + "</a></li>");
                            }
                            HtmlString.Append(
    "<li><font color=red><strong>" + page.ToString() + "</strong></font></li>");
                            
    for (i = page + 1; i < page + 3; i++)
                            {
                                HtmlString.Append(
    "<li><a href=" + UrlFormat + "" + i.ToString() + ">" + i.ToString() + "</a></li>");
                            }
                            HtmlString.Append(
    "<li>...</li>");
                            
    for (i = pageCount - 2; i <= pageCount; i++)
                            {
                                HtmlString.Append(
    "<li><a href=" + UrlFormat + "" + i.ToString() + ">" + i.ToString() + "</a></li>");
                            }
                        }
                    }
                    
    if (page < pageCount)
                    {
                        HtmlString.Append(
    "<li  class=\"long\"><a href=" + UrlFormat + "" + Convert.ToString(page + 1+ ">下一页</a></li>");
                    }
                    HtmlString.Append(
    "<li  class=\"long\"><a href=" + UrlFormat + "" + pageCount.ToString() + ">末页</a></li>");
                    HtmlString.Append(
    "</ul>");
                    HtmlString.Append(
    "</div>");
                }
                
    #endregion
                
    return HtmlString.ToString();
            }

        }
    }

    调用方式示例:

    repeater1.Length = 8
    repeater1.UrlFormat 
    = "/Log.aspx?domain=" + blogContext.Domain + "&";
    repeater1.Count 
    = Convert.ToInt64(blogContext.Owner.User_LogCount);
    repeater1.DataSource 
    = BlogCache.GetUserBlogListByBlogIdPaged(blogContext.PageIndex, 8, blogContext.BlogUserId);

    对应的css代码:

    代码
    .page{ clear:both; margin:15px 0;} 
    .page li,.page li.long{color: #000; font-weight:bold;20px;border:1px solid #DFE2E7; float: left;text-align:center; height:20px;line-height:20px;margin:1px;} 
    .page li a,.page li.long a{ display:block;color: #0000cc;font-weight:normal; text-decoration:none; text-align:center; height:20px;line-height:20px; 100%;} 
    .page li.long,.page li.long a{ 50px; } 
    .page li a:hover,.page li.long a:hover{background:#DFE2E7;} 

      

     这几个参数需要设置没有给默认值的哈,不然会报错的。写得有点乱,还是上大一那会写的,有点不灵活,html和css都是固定死的。

    后来做ajax,翻页的时候是不能有刷新的,也有把上面的那个改成了js的写法,需要的可以看一下: 

     javascript 实现ajax调用下的动态分页脚本

     二. 通用分页

    效果图片: 

    这个分页的样式(html和css)都是自定义的,和代码无关,你可是自定义html内容,也没有和repeater绑定。有三个类,本来是编译成了一个组件的。

    代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace CommonPager
    {
        
    public interface IUrlManager
        {
            
    int CurrentPageIndex { get; }           // 当前页码
            string GetPageUrl(int pageIndex);           // 根据 页码 获取页面路径
            int PageCount { get; }                     // 总页数

            
    int RecordCount { get; }                // 记录总数
            int PageSize { get; }                   // 分页大小
        }


    }

      

    代码
    using System;
    using System.Web;
    using System.Text.RegularExpressions;

    namespace CommonPager
    {
        
    public class DefaultUrlManager : IUrlManager
        {
            
    private HttpContext context;
            
    private Regex reg;
            
    private string queryParam;          // QueryString 参数名称
            private int currentPageIndex;       // 当前页
            private int pageCount;              // 总页数
            private int recordCount;        // 记录总数
            private int pageSize;            // 分页大小

            
    // 构造函数
            public DefaultUrlManager(int recordCount, int pageSize, string queryParam)
            {
                
    if (recordCount < 0)
                    
    throw new ArgumentOutOfRangeException("recordCount 应该大于等于 0 !");
                
    if (pageSize <= 0)
                    
    throw new ArgumentOutOfRangeException("pageSize 应该大于 0 !");
                
    if (string.IsNullOrEmpty(queryParam))
                    
    throw new ArgumentNullException("queryParam 不能为空!");


                
    // 设置私有变量
                this.recordCount = recordCount;
                
    this.pageSize = pageSize;
                
    this.queryParam = queryParam;
                context 
    = HttpContext.Current;
                
    string pattern = @"(?<r1>[?&]" + queryParam + @"=)[^&]*";
                reg 
    = new Regex(pattern, RegexOptions.IgnoreCase);


                
    // 如果记录数为0,至少也显示一页
                if (recordCount == 0)
                {
                    currentPageIndex 
    = 1;
                    pageCount 
    = 1;
                }
                
    else
                {

                    
    // 设置总页数
                    double recordCount2 = Convert.ToDouble(recordCount);
                    
    double pageSize2 = Convert.ToDouble(pageSize);
                    pageCount 
    = Convert.ToInt32(Math.Ceiling(recordCount2 / pageSize2));

                    
    // 设置当前页码
                    string queryIndex = context.Request.QueryString[queryParam];

                    
    if (string.IsNullOrEmpty(queryIndex))
                        currentPageIndex 
    = 1;
                    
    else
                    {
                        
    try
                        {
                            currentPageIndex 
    = Math.Abs(int.Parse(queryIndex));

                            
    if (currentPageIndex == 0)
                                currentPageIndex 
    = 1;
                            
    if (currentPageIndex > pageCount)
                                currentPageIndex 
    = pageCount;
                        }
                        
    catch
                        {
                            currentPageIndex 
    = 1;
                        }
                    }
                }
            }

            
    // 默认以 "Page" 作为 QueryString 的参数
            public DefaultUrlManager(int recordCount, int pageSize) : this(recordCount, pageSize, "Page") { }

            
    // 默认以 10 作为 PageSize
            public DefaultUrlManager(int recordCount, string queryParam) : this(recordCount, 10, queryParam) { }

            
    // 默认以 "Page" 作为 QueryString 的参数,以 10 作为分页大小
            public DefaultUrlManager(int recordCount) : this(recordCount, 10) { }


            
    public string GetPageUrl(int pageIndex)
            {
                
    string pageUrl = context.Request.Url.PathAndQuery;

                
    // 如果找到匹配,也就是URL中含有类似 ?page=3 或者 &page=4 这样的字符串
                
    // 则对后面的数值进行替换
                if (reg.IsMatch(pageUrl))
                {
                    pageUrl 
    = reg.Replace(pageUrl, "${r1}" + pageIndex.ToString());
                }
                
    else
                {

                    
    string queryString = context.Request.Url.Query;

                    
    if (string.IsNullOrEmpty(queryString))
                        pageUrl 
    += "?" + queryParam + "=" + pageIndex.ToString();
                    
    else
                        pageUrl 
    += "&" + queryParam + "=" + pageIndex.ToString();
                }

                
    return pageUrl;
            }

            
    public int CurrentPageIndex
            {
                
    get { return currentPageIndex; }
            }

            
    public int PageCount
            {
                
    get { return pageCount; }
            }

            
    public int RecordCount
            {
                
    get { return recordCount; }
            }

            
    public int PageSize
            {
                
    get { return pageSize; }
            }
        }


    }
    代码
    using System;
    using System.ComponentModel;
    using System.Web.UI;
    using System.Web.UI.WebControls;
          
    namespace CommonPager
    {
        [DefaultProperty(
    "Text")]
        [ToolboxData(
    "<{0}:Pager runat=server ></{0}:Pager>")]
        
    public class Pager : WebControl
        {
            
    #region Field

            
    private int currentPage;            // 当前页的页码
            private int previousPageCount = 5;      // 当前页之前可以显示的最多条目数,大于此条目的将被隐藏
            private int afterPageCount = 4;         // 当前页之后可以显示的最多条目数,大于此条目的将被隐藏
            private int pageCount;                  // 总页数

            
    private bool showPrevious = false;      // 是否显示 上一页、第一页 的链接
            private bool showNext = false;          // 是否显示 下一页、最末页 的链接

            
    private int startPage;                  // 显示的第一页 的 页码
            private int endPage;                // 显示的最末页 的 页码

            
    private string currentPageFormat = @"<a href='{0}' class='Current'>{1}</a>";
            
    private string normalPageFormat = @"<a href='{0}' class='PageIcon'>{1}</a>";
            
    private string headFormat = @"";
            
    private string footerFormat = @"";
            
    private string previousPageFormat = @"<a href='{0}' class='PageIcon'>上一页</a>";
            
    private string nextPageFormat = @"<a href='{0}' class='PageIcon'>下一页</a>";
            
    private string firstPageFormat = @"<a href='{0}' class='PageIcon'>第一页</a>";
            
    private string lastPageFormat = @"<a href='{0}' class='PageIcon'>最末页</a>";
            
    private string statPageFormat = @" ( 第<b>{0}</b>页/共<b>{1}</b>页 )";

            
    private IUrlManager urlManager;         // 设置接口

            
    #endregion 

            
    #region Property]
            [Bindable(
    true)]
            [Category(
    "Appearance")]
            [DefaultValue(
    "")]
            [Localizable(
    true)]
            
    public string HeadFormat
            {
                
    get {
                    
    return headFormat;
                }
                
    set 
                {
                    
    if (string.IsNullOrEmpty(value))
                    {
                        
    throw new Exception("The HeaderFormat can not be null");
                    }
                    headFormat 
    = value;
                }
            }
            [Bindable(
    true)]
            [Category(
    "Appearance")]
            [DefaultValue(
    "")]
            [Localizable(
    true)]
            
    public string FooterFormat
            {
                
    get { return footerFormat; }
                
    set
                {
                    
    if (string.IsNullOrEmpty(value))
                    {
                        
    throw new Exception("The FooterFormat can not be null");
                    }
                    footerFormat 
    = value;
                }
            }

            [Bindable(
    true)]
            [Category(
    "Appearance")]
            [DefaultValue(
    "")]
            [Localizable(
    true)]
            
    public string PreviousPageFormat
            {
                
    get
                {
                    
    return previousPageFormat;
                }
                
    set
                {
                    
    if (string.IsNullOrEmpty(value))
                    {
                        
    throw new Exception("The PreviousPageFormat can not be null");
                    }
                    previousPageFormat 
    = value;
                }
            }

            [Bindable(
    true)]
            [Category(
    "Appearance")]
            [DefaultValue(
    "")]
            [Localizable(
    true)]
            
    public string NextPageFormat
            {
                
    get 
                {
                    
    return nextPageFormat;
                }
                
    set
                {
                    
    if (string.IsNullOrEmpty(value))
                    {
                        
    throw new Exception("The NextPageFormat can not be null");
                    }

                    nextPageFormat 
    = value;
                }
            }

            [Bindable(
    true)]
            [Category(
    "Appearance")]
            [DefaultValue(
    "")]
            [Localizable(
    true)]
            
    public string StatPageFormat
            {
                
    get {
                    
    return statPageFormat;
                }
                
    set {
                    
    if (string.IsNullOrEmpty(value))
                    {
                        
    throw new Exception("The StatPageFormat can not be null");
                    }

                    statPageFormat 
    = value;
                }
            }


            [Bindable(
    true)]
            [Category(
    "Appearance")]
            [DefaultValue(
    "")]
            [Localizable(
    true)]
            
    public string FirstPageFormat
            {
                
    get { return firstPageFormat; }
                
    set {
                    
    if (string.IsNullOrEmpty(value))
                    {
                        
    throw new Exception("The FirstPageFormat can not be null");
                    }
                    firstPageFormat 
    = value;
                }
            }

            [Bindable(
    true)]
            [Category(
    "Appearance")]
            [DefaultValue(
    "")]
            [Localizable(
    true)]
            
    public string LastPageFormat
            {
                
    get { return lastPageFormat; }
                
    set {
                    
    if (string.IsNullOrEmpty(value))
                    {
                        
    throw new Exception("The LastPageFormat can not be null");
                    }
                    lastPageFormat 
    = value;
                }
            }

            [Bindable(
    true)]
            [Category(
    "Appearance")]
            [DefaultValue(
    "")]
            [Localizable(
    true)]
            
    public string NormalPageStringFormat
            {
                
    get {
                    
    return normalPageFormat;
                }
                
    set {
                    
    if (string.IsNullOrEmpty(value))
                    {
                        
    throw new Exception("The NormalPageFormat can not be null");
                    }
                    normalPageFormat 
    = value; 
                }
            }

            [Bindable(
    true)]
            [Category(
    "Appearance")]
            [DefaultValue(
    "")]
            [Localizable(
    true)]
            
    public string CurrentPageStringFormat
            {
                
    get
                {
                    
    return currentPageFormat;
                }
                
    set
                {
                    
    if (string.IsNullOrEmpty(value))
                    {
                        
    throw new Exception("The CurrentPageFormat can not be null");
                    }
                    currentPageFormat 
    = value;
                }
            }

            [Bindable(
    true)]
            [Category(
    "Appearance")]
            [DefaultValue(
    "")]
            [Localizable(
    true)]
            
    public string Text
            {
                
    get
                {
                    String s 
    = (String)ViewState["Text"];
                    
    return ((s == null? String.Empty : s);
                }

                
    set
                {
                    ViewState[
    "Text"= value;
                }
            }
          
            [Category(
    "Appearance")]
            [DefaultValue(
    "")]
            [Localizable(
    true)]
            
    public int PreviousPageCount
            {
                
    get { return previousPageCount; }
                
    set { previousPageCount = value; }
            }

            [Category(
    "Appearance")]
            [DefaultValue(
    "")]
            [Localizable(
    true)]
            
    public int AfterPageCount
            {
                
    get { return afterPageCount; }
                
    set { afterPageCount = value; }
            }

            [Category(
    "Appearance")]
            [DefaultValue(
    "")]
            [Localizable(
    true)]
            
    public IUrlManager UrlManager
            {
                
    get { return urlManager; }
                
    set { urlManager = value; }
            }

            
    #endregion

            
    #region Method
            
    protected override void RenderContents(HtmlTextWriter output)
            {
                
    if (urlManager == null)
                    
    throw new ArgumentNullException("IUrlManager 不能为 Null");
                
    // 获取当前页
                currentPage = urlManager.CurrentPageIndex;
                
    // 获取总页数
                pageCount = urlManager.PageCount;

                SetStartPage();
                SetEndPage();
                HyperLink link;

                output.Write(HeadFormat);            
                
    // 循环打印链接
                for (int i = startPage; i <= endPage; i++)
                {
                    
    if (showPrevious) // 如果需要显示前一页、第一页链接
                        AddPreviousLink(urlManager, output);

                    link 
    = new HyperLink();
                    
    if (i == currentPage)
                    {
                        
    this.MakeLink(output, CurrentPageStringFormat, i, urlManager.GetPageUrl(i));
                        
    //this.MakeLink(output, "CurrentPage", "第" + i.ToString() + "页", urlManager.GetPageUrl(i));
                    }
                    
    else
                    {
                        
    this.MakeLink(output, NormalPageStringFormat, i, urlManager.GetPageUrl(i));
                        
    //this.MakeLink(output, "PagerIcon", "第" + i.ToString() + "页", urlManager.GetPageUrl(i));
                    }

                    
    if (i == endPage && showNext)   // 如果需要显示 下一页、最末页 链接
                        AddNextLink(urlManager, output);
                }
                
                output.Write(String.Format(StatPageFormat, currentPage, pageCount));
                output.Write(FooterFormat);
            }

            
    // 添加“第一页”,“上一页”的连接
            private void AddPreviousLink(IUrlManager urlManager, HtmlTextWriter output)
            {
                output.Write(String.Format(FirstPageFormat, urlManager.GetPageUrl(
    1)));
                output.Write(String.Format(PreviousPageFormat, urlManager.GetPageUrl(currentPage 
    - 1)));

                
    //this.MakeLink(output, "PagerIcon", "第一页", urlManager.GetPageUrl(1));
                
    //this.MakeLink(output, "PagerIcon", "上一页", urlManager.GetPageUrl(currentPage - 1));

                showPrevious 
    = false// 只显示一次
            }

            
    // 添加 “下一页”、“最末页” 的链接
            private void AddNextLink(IUrlManager urlManager, HtmlTextWriter output)
            {
                output.Write(String.Format(NextPageFormat, urlManager.GetPageUrl(currentPage 
    + 1)));
                output.Write(String.Format(LastPageFormat, urlManager.GetPageUrl(pageCount)));

                
    //this.MakeLink(output, "PagerIcon", "下一页", urlManager.GetPageUrl(currentPage + 1));
                
    //this.MakeLink(output, "PagerIcon", "最末页", urlManager.GetPageUrl(pageCount));
                showNext = false// 可有可无,程序会跳出循环
            }

            
    // 根据当前页,当前页之前可以显示的页数,算得从第几页开始进行显示
            private void SetStartPage()
            {
                
    // 如果当前页小于 它前面所可以显示的条目数,那么显示第一页就是实际的第一页
                if (currentPage <= previousPageCount)
                {
                    startPage 
    = 1;
                }
                
    else // 这种情况下 currentPage 前面总是能显示完,要根据后面的长短确定是不是前面应该多显示
                {
                    
    if (currentPage > previousPageCount + 1)
                        showPrevious 
    = true;

                    
    int linkLength = (pageCount - currentPage + 1+ previousPageCount;

                    
    int startPage = currentPage - previousPageCount;

                    
    while (linkLength < previousPageCount + afterPageCount + 1 && startPage > 1)
                    {
                        linkLength
    ++;
                        startPage
    --;
                    }

                    
    this.startPage = startPage;
                }
            }

            
    // 根据CurrentPage、总页数、当前页之后长度 算得显示的最末页是 第几页
            private void SetEndPage()
            {
                
    // 如果当前页加上它之后可以显示的页数 大于 总页数,那么显示的最末页就是实际的最末页
                if (currentPage + afterPageCount >= pageCount)
                {
                    endPage 
    = pageCount;
                }
                
    else // 这种情况下 currentPage后面的总是可以显示完,要根据前面的长短确定是不是后面应该多显示
                {

                    
    int linkLength = (currentPage - startPage + 1+ afterPageCount;

                    
    int endPage = currentPage + afterPageCount;

                    
    while (linkLength < previousPageCount + afterPageCount + 1 && endPage < pageCount)
                    {
                        linkLength
    ++;
                        endPage
    ++;
                    }

                    
    if (endPage < pageCount)
                        showNext 
    = true;

                    
    this.endPage = endPage;
                }
            }

            
    /// <summary>
            
    /// 
            
    /// </summary>
            
    /// <param name="output"></param>
            
    /// <param name="Class"></param>
            
    /// <param name="Title"></param>
            
    /// <param name="Href"></param>
            private void MakeLink(HtmlTextWriter output,string Class,string Title,string Href)
            {
                output.AddAttribute(HtmlTextWriterAttribute.Href, Href);
                output.AddAttribute(HtmlTextWriterAttribute.Class, Class);
                output.AddAttribute(HtmlTextWriterAttribute.Title, Title);
                output.RenderBeginTag(HtmlTextWriterTag.A);
                output.Write(Title);
                output.WriteEndTag(
    "a");
            }

            
    private void MakeLink(HtmlTextWriter output, string format, int pageNumer,string href)
            {
                output.Write(
    string.Format(format, href, pageNumer));
            }

            
    #endregion 
        }
    }

    调用方式:

    代码

            pager1.CurrentPageStringFormat = "<span class=\"current\">{1}</span>";
            pager1.StatPageFormat = " ";
            pager1.LastPageFormat = " ";
            CommonPager.DefaultUrlManager cp = new CommonPager.DefaultUrlManager(20000,20"pageindex");
            pager1.UrlManager = cp;
  • 相关阅读:
    AS3.0纯代码编写的两款loading效果
    AS3.0 Vector的运用
    java 垃圾回收总结(1)
    as3垃圾回收机制
    AS3.0 效率优化
    数组去重的方法
    javascript 的垃圾回收机制讲一下
    浅拷贝和深拷贝
    判断 js 类型的方式
    前端安全问题?
  • 原文地址:https://www.cnblogs.com/lulu/p/1275616.html
Copyright © 2011-2022 走看看