NavButtons的理解

using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;


namespace MSPress.ServerControls {
    [
    DefaultEvent("ClickNext"),
    DefaultProperty("NextText")
    ]
    public class NavButtons: WebControl, IPostBackEventHandler {
       
        private static readonly object EventClickNext = new object();
        private static readonly object EventClickPrevious = new object();
             
        [
        Bindable(true),
        Category("Behavior"),
        DefaultValue(""),
        Description("The text to display on the Next button")
        ]
        public virtual string NextText {
            get {
                string s = (string)ViewState["NextText"];
                return((s == null) ? String.Empty : s);
            }
            set {
                ViewState["NextText"] = value;
            }
        }
       
        [
        Bindable(true),
        Category("Behavior"),
        DefaultValue(""),
        Description("The text to display on the Previous button")
        ]
        public virtual string PreviousText {
            get {
                string s = (string)ViewState["PreviousText"];
                return((s == null) ? String.Empty : s);
            }
            set {
                ViewState["PreviousText"] = value;
            }
        }
       
        [
        Category("Action"),
        Description("Raised when the Next button is clicked")
        ]
        public event EventHandler ClickNext {
            add {
                Events.AddHandler(EventClickNext, value);
            }
            remove {
                Events.RemoveHandler(EventClickNext, value);
            }
        }
        [
        Category("Action"),
        Description("Raised when the Previous button is clicked")
        ]
        public event EventHandler ClickPrevious {
            add {
                Events.AddHandler(EventClickPrevious, value);
            }
            remove {
                Events.RemoveHandler(EventClickPrevious, value);
            }
        }  

        // Invokes delegates registered with the ClickNext event.
        protected virtual void OnClickNext (EventArgs e) {
            EventHandler clickNextHandler = (EventHandler)Events[EventClickNext];
            if (clickNextHandler != null) {
                clickNextHandler(this, e);
            } 
        }
    
        // Invokes delegates registered with the ClickPrevious event.
        protected virtual void OnClickPrevious (EventArgs e) {
            EventHandler clickPreviousHandler = (EventHandler)Events[EventClickPrevious];
            if (clickPreviousHandler != null) {
                clickPreviousHandler(this, e);
            } 
        }

        // Method of IPostBackEventHandler that raises postback events.
        void IPostBackEventHandler.RaisePostBackEvent(string eventArgument){
            if (eventArgument == "Previous")
                OnClickPrevious(EventArgs.Empty);
            else if (eventArgument == "Next")
                OnClickNext(EventArgs.Empty);
        }

     
        protected override void Render(HtmlTextWriter writer) {
            // Ensures that this control is nested in a server form.
            if (Page != null) {
                Page.VerifyRenderingInServerForm(this);
            }
            base.Render(writer);
        }

        protected override void RenderContents(HtmlTextWriter writer) {
            writer.AddAttribute(HtmlTextWriterAttribute.Onclick, Page.GetPostBackEventReference(this, "Previous"));
            writer.AddAttribute("language", "javascript");
            writer.RenderBeginTag(HtmlTextWriterTag.Button);
            writer.Write(this.PreviousText);
            writer.RenderEndTag();

            writer.AddAttribute(HtmlTextWriterAttribute.Onclick, Page.GetPostBackEventReference(this, "Next"));
            writer.AddAttribute("language", "javascript");
            writer.RenderBeginTag(HtmlTextWriterTag.Button);
            writer.Write(this.NextText);
            writer.RenderEndTag();
        }     
    }   
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值