• 简单的分页控件(原创)


    前台有个容器用来存放创建的HtmlAnchor 
    生成的样式:首页 上一页 12345 下一页 末页
       /// <summary>
    ///
    /// </summary>
    /// <param name="page">index first page is 0</param>
    /// <returns></returns>
    HtmlAnchor GetPageLink(int page)
    {
    HtmlAnchor a = new HtmlAnchor();
    if (page < 0 || page > ItemCount / PageSize) return null;
    //a.HRef = string.Format(Request.Path + (Request .QueryString .Count >0?string.Empty : "?")+"PageIndex={0}", page.ToString());
    a.HRef =ToUriWithUserDomain(string.Format ("/HealthPostList/{0}.aspx",page.ToString ()));
    a.InnerText = (page + 1).ToString();
    return a;
    }

    void PageLinks()
    {
    Dictionary<int, int[]> pageIDs = new Dictionary<int, int[]>();
    int pageCount = idList.Length / PageSize;
    for (int i = 0, c = pageCount; i <= c; i++)
    {
    var item = idList.Skip(i * PageSize).Take(PageSize).ToArray ();
    if (item.Length <= 0) continue;
    pageIDs.Add(i,item);
    }

    idList = pageIDs[PageIndex];

    //first page
    HtmlAnchor firstPage =GetPageLink (0);
    firstPage .InnerText ="首页";
    PageLinkList .Controls .Add (firstPage);
    HtmlAnchor prePage = GetPageLink((PageIndex - 1) < 0 ? 0 : (PageIndex - 1));
    prePage.InnerText = "上一页";
    PageLinkList.Controls.Add(prePage);

    int range = 2;
    int wholeRange = range * 2 + 1;
    if (wholeRange > pageCount)
    {
    wholeRange = pageCount;
    range = wholeRange / 2;
    }
    List<int> showPageIndex = new List<int>();
    showPageIndex.Add(PageIndex);

    while (showPageIndex.Count() < wholeRange)
    {
    showPageIndex.Add(showPageIndex.Max() + 1);
    showPageIndex.Add(showPageIndex.Min() - 1);
    if (PageIndex < range)
    showPageIndex.Add(showPageIndex.Max() + 1);
    if (PageIndex >= pageCount)
    showPageIndex.Add(showPageIndex.Min() - 1);

    showPageIndex = showPageIndex.OrderBy(item => item).ToList ();

    showPageIndex = showPageIndex.Where(item => item >=0 && item < pageCount).ToList();

    }

    //showPageIndex.OrderBy(item => item);

    foreach (int i in showPageIndex)
    {
    if(i==PageIndex )
    {
    HtmlGenericControl font = new HtmlGenericControl("font");
    font.Attributes.Add("style", "font-size:24px");
    font.Controls.Add(GetPageLink(PageIndex));
    PageLinkList.Controls.Add(font);
    }
    else
    PageLinkList.Controls.Add(GetPageLink(i));
    }

    HtmlAnchor nextPage = GetPageLink((PageIndex + 1) > (pageCount - 1) ? PageIndex : (PageIndex + 1));
    nextPage.InnerText = "下一页";
    PageLinkList.Controls.Add(nextPage);

    HtmlAnchor endPage = GetPageLink((pageCount - 1)<0?0:(pageCount -1));
    endPage.InnerText = "末页";
    PageLinkList.Controls.Add(endPage);
    }
    版本二
       public partial class List : BaiChang .HeaBlog .Framework .HttpHandler .UserPage
        {
            
    private int PageIndex = 0;
            
    private int PageSize = 2;
            
    private int ItemCount =10;
            
    private int[] idList;
            Dictionary
    <intint[]> pageIDs = new Dictionary<intint[]>();
            
    protected void Page_Load(object sender, EventArgs e)
            {
                idList 
    = EA.Posts.GetAllPostIDByUserID(base.BlogUser.UserID).Reverse().ToArray();
                ItemCount 
    = idList.Length;
                PageIndex 
    = -1;
                
    if (!IsPostBack)
                {
                    
    if (Request.QueryString["PageIndex"!= null 
                        
    && 
                        
    int.TryParse(Request.QueryString["PageIndex"].ToString (), out PageIndex)) { }
                    
    if (PageIndex < 0)
                        PageIndex 
    = 0;
                    PageLinks();
                }
                Array.ForEach
    <int>(pageIDs[PageIndex],
                it 
    =>
                {
                    System.Web.UI.Control c 
    = Utils.LoadShowHealBlogControl(it);
                    Content.Controls.Add(c);
                });
               
            }

            
    void PageLinks()
            {
                
    int pageCount = idList.Length / PageSize;
                
    for (int i = 0, c = pageCount; i <= c; i++)
                {
                    var item 
    = idList.Skip(i * PageSize).Take(PageSize).ToArray();
                    
    if (item.Length <= 0continue;
                    pageIDs.Add(i, item);
                }

                idList 
    = pageIDs[PageIndex];

                
    //first page
                HtmlAnchor firstPage = GetPageLink(0true);
                firstPage.InnerText 
    = "首页";
                PageLinkList.Controls.Add(firstPage);

                HtmlAnchor prePage 
    = GetPageLink((PageIndex - 1< 0 ? 0 : (PageIndex - 1), true);
                
    if (prePage != null)
                {
                    prePage.InnerText 
    = "上一页";
                    PageLinkList.Controls.Add(prePage);
                }

                
    int range = 2;
                
    int wholeRange = range * 2 + 1;
                
    if (wholeRange > pageCount)
                {
                    wholeRange 
    = pageCount;
                    range 
    = wholeRange / 2;
                }
                List
    <int> showPageIndex = new List<int>();
                showPageIndex.Add(PageIndex);

                
    while (showPageIndex.Count() < wholeRange)
                {
                    showPageIndex.Add(showPageIndex.Max() 
    + 1);
                    showPageIndex.Add(showPageIndex.Min() 
    - 1);
                    
    if (PageIndex < range)
                        showPageIndex.Add(showPageIndex.Max() 
    + 1);
                    
    if (PageIndex >= pageCount)
                        showPageIndex.Add(showPageIndex.Min() 
    - 1);

                    showPageIndex 
    = showPageIndex.OrderBy(item => item).ToList();

                    showPageIndex 
    = showPageIndex.Where(item => item >= 0 && item < pageCount).ToList();

                }

                
    foreach (int i in showPageIndex)
                {
                    
    if (i == PageIndex)
                    {
                        HtmlGenericControl font 
    = new HtmlGenericControl("font");
                        font.Attributes.Add(
    "style""font-size:24px");
                        System.Web.UI.Control c 
    = GetPageLink(PageIndex, true);
                        
    if (c != null)
                            font.Controls.Add(c);
                        PageLinkList.Controls.Add(font);
                    }
                    
    else
                    {
                        System.Web.UI.Control c 
    = GetPageLink(i, true);
                        
    if (c != null)
                            PageLinkList.Controls.Add(c);
                    }
                }

                HtmlAnchor nextPage 
    = GetPageLink((PageIndex + 1> (pageCount - 1? PageIndex : (PageIndex + 1), false);
                nextPage.InnerText 
    = "下一页";
                PageLinkList.Controls.Add(nextPage);

                HtmlAnchor endPage 
    = GetPageLink((pageCount - 1< 0 ? 0 : (pageCount - 1), false);
                endPage.InnerText 
    = "末页";
                PageLinkList.Controls.Add(endPage);

                TextBox tb 
    = new TextBox();
                tb.ID 
    = "txtPageIndex";
                tb.MaxLength 
    = 3;
                PageLinkList.Controls.Add(tb);

                Button btn 
    = new Button();
                btn.ID 
    = "btnTo";
                btn.Text 
    = "GO";
                btn.Click 
    += new EventHandler(btn_Click);
                PageLinkList.Controls.Add(btn);
            }

            HtmlAnchor GetPageLink(
    int page, bool isCheckIgnore)
            {

                HtmlAnchor a 
    = new HtmlAnchor();
                
    if (isCheckIgnore &&( page < 0 || page > ItemCount / PageSize)) return null;
                a.HRef 
    = string.Format("{0}{1}/HealBlog/List/?PageIndex={2}", Utils.WebRoot, BlogUserDomain.Domain, page);
                
    //a.HRef = string.Format(Request.Path + (Request .QueryString .Count >0?string.Empty: "?")+"PageIndex={0}", page.ToString());
                a.InnerText = (page + 1).ToString();
                
    return a;
            }
            
    void btn_Click(object sender, EventArgs e)
            {
                TextBox tb 
    = (TextBox)Page.FindControl("btnTo");
                
    if (tb != null)
                {
                    
    int.TryParse(tb.Text, out PageIndex);
                }
               
    //在这里写跳转
            }

        }

    作者:KKcat
        
    个人博客:http://jinzhao.me/
        
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    linux 终端光标消失问题
    linux系统中条件测试语句
    linux shell if语句
    linux shell for循环
    linux 系统中read命令
    linux中while循环语句
    linux shell脚本中流程控制语句 if 、for、while、case
    pc端WINCE的安装包
    WinCE程序的几种开发方法
    Wince 下开发技巧(一)查看内存
  • 原文地址:https://www.cnblogs.com/jinzhao/p/1590758.html
Copyright © 2020-2023  润新知