zoukankan      html  css  js  c++  java
  • 自定义控件(分页)

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls.Adapters;
    namespace LBControl
    {
        public class LBPager : Control, IPostBackEventHandler
        {

            //页大小
            private int pagesize = 10;
            public int PageSize
            {
                get { return pagesize; }
                set { pagesize = value; }
            }

            //总数量
            private int recordcount;
            public int RecordCount
            {
                get { return recordcount; }
                set { recordcount = value; }
            }

            // 总页数
            private int PageCount
            {
                get
                {
                    int _pageCount = 0;
                    if ((recordcount % pagesize) == 0)
                    {
                        _pageCount = recordcount / pagesize;
                    }
                    else
                    {
                        _pageCount = recordcount / pagesize + 1;
                    }
                    return _pageCount;
                }
            }

            //当前页
            private int curpage;
            public int CurPage
            {
                get { return curpage; }
                set { curpage = value; }
            }

            //风格
            private string pastyle;
            public string PAStyle
            {
                get { return pastyle; }
                set { pastyle = value; }
            }

            //显示页数量
            private int showpagecount = 10;
            public int ShowPageCount
            {
                get { return showpagecount; }
                set { showpagecount = value; }
            }


            protected override void Render(HtmlTextWriter writer)
            {
                //得到正确的当前页
                int pacurpage = curpage;
                if (ViewState["cp"] != null)
                {
                    pacurpage = int.Parse(ViewState["cp"].ToString());
                }
                pacurpage = pacurpage <= 0 ? 1 : pacurpage;
                pacurpage = pacurpage > PageCount ? PageCount : pacurpage;

                //定义要显示的开始页和结束页.
                int startpageindex = 1;
                int endpageindex = 1;

                if ((PageCount - pacurpage + 1) < showpagecount)
                {

                    startpageindex = PageCount - showpagecount + 1;
                    startpageindex = startpageindex <= 0 ? 1 : startpageindex;
                    endpageindex = PageCount;
                }
                else
                {

                    int mo = pacurpage / showpagecount;
                    int yu = pacurpage % showpagecount;

                    if (yu == 0)
                    {
                        mo = mo - 1;
                    }

                    //如果是最后一页。摸会比其他多1
                    startpageindex = mo * showpagecount + 1;
                    endpageindex = (mo + 1) * showpagecount;
                }

                writer.Write("<div class=\"" + pastyle + "\">\n");
                writer.Write("记录数:");
                writer.Write(recordcount);
                writer.Write("总页数:");
                writer.Write(PageCount + "");

                writer.Write(" <a href=\"" + this.Page.ClientScript.GetPostBackClientHyperlink(this, "1") + "\"><<</a>\n");

                if (pacurpage != 1)
                {
                    writer.Write(" <a href=\"" + this.Page.ClientScript.GetPostBackClientHyperlink(this, (pacurpage - 1).ToString()) + "\">上一页</a>\n");
                }
                else
                {
                    writer.Write("<a>上一页</a>\n");
                }

                for (int i = startpageindex; i <= endpageindex; i++)
                {
                    if (i == pacurpage)
                    {
                        writer.Write(" <a href=\"" + this.Page.ClientScript.GetPostBackClientHyperlink(this, i.ToString()) + "\">[" + i + "]</a>\n");
                    }
                    else
                    {
                        writer.Write(" <a href=\"" + this.Page.ClientScript.GetPostBackClientHyperlink(this, i.ToString()) + "\">" + i + "</a>\n");
                    }
                }
                if (pacurpage != PageCount)
                {
                    writer.Write(" <a href=\"" + this.Page.ClientScript.GetPostBackClientHyperlink(this, (pacurpage + 1).ToString()) + "\">下一页</a>\n");
                }
                else
                {
                    writer.Write(" <a>上一页</a>\n");
                }

                writer.Write(" <a href=\"" + this.Page.ClientScript.GetPostBackClientHyperlink(this, PageCount.ToString()) + "\">>></a>\n");
                writer.Write("</div>\n");
                base.Render(writer);
            }

            public delegate void EventPageIndex(Object sender, pagerarg e);

            public event EventPageIndex PageChange;  //页更改事件

            public virtual void HEREPageChange(Object sender, pagerarg e)
            {
                if (PageChange != null)
                {
                    PageChange(this, e);
                }
            }


            public class pagerarg : EventArgs
            {
                private int curpage;
                public int CurPage
                {
                    get { return curpage; }
                    set { curpage = value; }
                }
            }

            public void RaisePostBackEvent(string eventArgument)
            {
                pagerarg e = new pagerarg();
                e.CurPage = int.Parse(eventArgument);
                curpage = int.Parse(eventArgument);
                ViewState["cp"] = int.Parse(eventArgument);
                HEREPageChange(this, e);
            }

            protected override void OnPreRender(EventArgs e)
            {
                base.OnPreRender(e);
            }
        }
    }

     

     css:

    .paginator
    {
     font: 11px Arial, Helvetica, sans-serif;padding:5px 10px 5px 0; margin: 0px;
    }
    .paginator a
    {
     padding: 1px 6px;
     border: solid 1px #ddd;
     background: #fff;
     text-decoration: none;
     margin-right:2px
    }
    .paginator a:visited
    {
     padding: 1px 6px;
     border: solid 1px #ddd;
     background: #fff;
     text-decoration: none;}
    .paginator .cpb
    {
     padding: 1px 6px;
     font-weight: bold;
     font-size: 13px;
     border:none}
    .paginator a:hover
     {
     color: #fff;
     background: #8db2e3;
     border-color:#003366;
     text-decoration: none;
    }

  • 相关阅读:
    🌏HTML文档结构与标签语法
    🌎HTML简介
    🍖Web前端介绍Web前端介绍
    🍖事务隔离机制
    🍖多版本并发控制 MVCC 的快照读与当前读简介
    🍖MySQL锁机制
    🍖数据库读现象(问题)
    hashlib 模块用来进行hash
    Logging 模块
    config parser 模块
  • 原文地址:https://www.cnblogs.com/lsfv/p/1446403.html
Copyright © 2011-2022 走看看