复合控件分页控件参考代码

来源:互联网 发布:excel表格数据透视图 编辑:程序博客网 时间:2024/06/06 06:48
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace AspNetPageControl
{
    [DefaultProperty("Text")]
    [ToolboxData("<{0}:AspNetPage runat=server></{0}:AspNetPage>")]
    public class AspNetPage :CompositeControl
    {
        [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;
            }
        }

        [Bindable(true)]
        [Category("Appearance")]
        [DefaultValue("5")]
        [Localizable(true)]
        public int? PageSize
        {
            get
            {
                int? s = (int?)ViewState["PageSize"];
                return ((s == null) ? 15 : s);
            }
            set
            {
                ViewState["PageSize"] = value;
            }
        }
        [Bindable(true)]
        [Category("Appearance")]
        [DefaultValue("10")]
        [Localizable(true)]
        public int? PageCount
        {
            get
            {
                int? s = (int?)ViewState["PageCount"];
                return ((s == null) ? 0 : s);
            }
            set
            {
                ViewState["PageCount"] = value;
            }
        }
        [Bindable(true)]
        [Category("Appearance")]
        [DefaultValue("0")]
        [Localizable(true)]
        public int? CurrentPageIndex
        {
            get
            {
                int? s = (int?)ViewState["CurrentPageIndex"];
                return ((s == null) ? 0 : s);
            }
            set
            {
                ViewState["CurrentPageIndex"] = value;
            }
        }
        LinkButton FrontPage;
        LinkButton PrePage;
        LinkButton NextPage;
        LinkButton LastPage;

        protected override void RecreateChildControls()
        {
            if (this.ChildControlsCreated == false)
                base.RecreateChildControls();
        }
        protected override void CreateChildControls()
        {
            this.Controls.Clear();
            FrontPage = new LinkButton();
            FrontPage.ID = "FrontPage";
            FrontPage.Text = "首页";
            PrePage = new LinkButton();
            PrePage.ID = "PrePage";
            PrePage.Text = "上一页";
            NextPage = new LinkButton();
            NextPage.ID = "NextPage";
            NextPage.Text = "下一页";
            LastPage = new LinkButton();
            LastPage.ID = "LastPage";
            LastPage.Text = "尾页";
            this.Controls.Add(FrontPage);
            this.Controls.Add(PrePage);
            this.Controls.Add(NextPage);
            this.Controls.Add(LastPage);
            this.ChildControlsCreated = true;   
        }

        public delegate void AspNetPageEventHandler(object sender, AspNetPageEventArgs e);
        [Category("Action"),Description("翻页事件")]
        private new static readonly object EventPageIndexChanged = new object();
        public event AspNetPageEventHandler PageIndexChanged
        {
            add { base.Events.AddHandler(AspNetPage.EventPageIndexChanged, value); }
            remove { base.Events.RemoveHandler(AspNetPage.EventPageIndexChanged,value); }
        }


        public void OnPageIndexChanged(AspNetPageEventArgs e)
        {
            AspNetPageEventHandler handler = (AspNetPageEventHandler)base.Events[EventPageIndexChanged];
            if(handler!=null)
            {
                handler(this,e);
            }

        }

        protected override bool OnBubbleEvent(object source, EventArgs args)
        {
            bool handler = false;
            LinkButton lbtn = (LinkButton)source;
            AspNetPageEventArgs e = new AspNetPageEventArgs();
            if (lbtn.ID == "FrontPage")
            {
                if (this.CurrentPageIndex != 0)
                {
                    this.CurrentPageIndex = 0;
                    e.CurrentPageIndex = this.CurrentPageIndex;
                    e.PageCount = this.PageCount;
                    OnPageIndexChanged(e);
                }
                handler = true;
            }
            if (lbtn.ID == "PrePage")
            {
                if (this.CurrentPageIndex != 0)
                {
                    this.CurrentPageIndex = this.CurrentPageIndex - 1;
                    e.CurrentPageIndex = this.CurrentPageIndex;
                    e.PageCount = this.PageCount;
                    e.PageSize = this.PageSize;
                    OnPageIndexChanged(e);
                }
              
                 handler=true; 
            }


            if (lbtn.ID == "NextPage")
            {
                if (this.CurrentPageIndex != this.PageSize - 1)
                {
                    this.CurrentPageIndex = this.CurrentPageIndex + 1;
                    e.CurrentPageIndex = this.CurrentPageIndex;
                    e.PageCount = this.PageCount;
                    e.PageSize = this.PageSize;
                    OnPageIndexChanged(e);
                }
                handler = true;
            }


            if (lbtn.ID == "LastPage")
            {
                if (this.CurrentPageIndex != this.PageSize - 1)
                {
                    this.CurrentPageIndex = this.PageSize - 1;
                    e.CurrentPageIndex = this.CurrentPageIndex;
                    e.PageCount = this.PageCount;
                    e.PageSize = this.PageSize;
                    OnPageIndexChanged(e);
                }
                handler=true;
            }
            return handler || base.OnBubbleEvent(source, args);
        }
        protected override void RenderContents(HtmlTextWriter output)
        {
            output.Write("<table>");
            output.Write("<tr>");
            output.Write("<td>");
            FrontPage.RenderControl(output);
            output.Write("</td>");
            output.Write("<td>");
            PrePage.RenderControl(output);
            output.Write("</td>");
            output.Write("<td>");
            NextPage.RenderControl(output);
            output.Write("</td>");
            output.Write("<td>");
            LastPage.RenderControl(output);
            output.Write("</td>");
            output.Write("</tr>");
            output.Write("</table>");
        }
    }

}


using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace AspNetPageControl
{
    public class AspNetPageEventArgs:System.EventArgs
    {
        public AspNetPageEventArgs()
        { 
        }
        public int? PageSize { get; set; }
        public int? CurrentPageIndex { get; set; }
        public int? PageCount { get; set; }
    }
}

0 0