此为自定义控件代码:编译成功。
using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Diagnostics;
namespace EBusiness
{
/// <summary>
/// PostBack 的摘要说明。
/// </summary>
[DefaultEvent("EventClickPrevious"),DefaultProperty("Text")]
public class PostBack:WebControl,IPostBackDataHandler,IPostBackEventHandler
{
public PostBack()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
protected static readonly object EventClickPrevious=new object();//定义一个键,用于EventHandler中存储和取回事件委
#region IPostBackDataHandler 成员 public virtual string Text
{
get
{string s=(string)ViewState["Text"];
return ((s==null)?String.Empty:s);
}
set
{ViewState["Text"]=value;}
}
public virtual string PreviousText
{
get
{
string s=(string)ViewState["PreviousText"];
return ((s==null)?String.Empty:s);
}
set
{ViewState["PreviousText"]=value;}
}
//protected override HtmlTextWriterTag TagKey
//{
// get
/// {
// return HtmlTextWriterTag.div;
// }
//}
protected override void Render(HtmlTextWriter writer)
{
if (Page!=null)
{Page.VerifyRenderingInServerForm(this);}
base.Render (writer);
}
protected override void RenderContents(HtmlTextWriter writer)
{
//writer.Write(Text);
writer.AddAttribute(HtmlTextWriterAttribute.Onclick,Page.GetPostBackEventReference(this,"Previous"));
writer.AddAttribute("language","javascript");
writer.RenderBeginTag(HtmlTextWriterTag.Button);
writer.Write(this.PreviousText);
writer.RenderEndTag();
} public event EventHandler ClickPrevious //events 为EeventHandlerList类型。
{
add
{Events.AddHandler("EventClickPrevious",value);}
remove
{Events.RemoveHandler("EventClickPrevious",value);} }
public void RaisePostDataChangedEvent()
{
// TODO: 添加 PostBack.RaisePostDataChangedEvent 实现
} public bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
{
// TODO: 添加 PostBack.LoadPostData 实现
return true;
} #endregion #region IPostBackEventHandler 成员 void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)
{
// TODO: 添加 PostBack.RaisePostBackEvent 实现
if (eventArgument=="Previous")
{
OnClickPrevious(EventArgs.Empty);
}
}
//protected override void AddAttributesToRender(HtmlTextWriter writer)
//{
// base.AddAttributesToRender (writer);
// writer.AddAttribute(HtmlTextWriterAttribute.Href,Page.GetPostBackClientHyperlink(this,String.Empty));.
// }
protected virtual void OnClickPrevious(EventArgs e)
{
EventHandler clickPreviousHandler=(EventHandler)Events["ClickPrevious"];
if (clickPreviousHandler!=null)
{ clickPreviousHandler(this,e);
}
} #endregion
//protected override void RenderChildren(HtmlTextWriter writer)
//{
//}
}
}
using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Diagnostics;
namespace EBusiness
{
/// <summary>
/// PostBack 的摘要说明。
/// </summary>
[DefaultEvent("EventClickPrevious"),DefaultProperty("Text")]
public class PostBack:WebControl,IPostBackDataHandler,IPostBackEventHandler
{
public PostBack()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
protected static readonly object EventClickPrevious=new object();//定义一个键,用于EventHandler中存储和取回事件委
#region IPostBackDataHandler 成员 public virtual string Text
{
get
{string s=(string)ViewState["Text"];
return ((s==null)?String.Empty:s);
}
set
{ViewState["Text"]=value;}
}
public virtual string PreviousText
{
get
{
string s=(string)ViewState["PreviousText"];
return ((s==null)?String.Empty:s);
}
set
{ViewState["PreviousText"]=value;}
}
//protected override HtmlTextWriterTag TagKey
//{
// get
/// {
// return HtmlTextWriterTag.div;
// }
//}
protected override void Render(HtmlTextWriter writer)
{
if (Page!=null)
{Page.VerifyRenderingInServerForm(this);}
base.Render (writer);
}
protected override void RenderContents(HtmlTextWriter writer)
{
//writer.Write(Text);
writer.AddAttribute(HtmlTextWriterAttribute.Onclick,Page.GetPostBackEventReference(this,"Previous"));
writer.AddAttribute("language","javascript");
writer.RenderBeginTag(HtmlTextWriterTag.Button);
writer.Write(this.PreviousText);
writer.RenderEndTag();
} public event EventHandler ClickPrevious //events 为EeventHandlerList类型。
{
add
{Events.AddHandler("EventClickPrevious",value);}
remove
{Events.RemoveHandler("EventClickPrevious",value);} }
public void RaisePostDataChangedEvent()
{
// TODO: 添加 PostBack.RaisePostDataChangedEvent 实现
} public bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
{
// TODO: 添加 PostBack.LoadPostData 实现
return true;
} #endregion #region IPostBackEventHandler 成员 void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)
{
// TODO: 添加 PostBack.RaisePostBackEvent 实现
if (eventArgument=="Previous")
{
OnClickPrevious(EventArgs.Empty);
}
}
//protected override void AddAttributesToRender(HtmlTextWriter writer)
//{
// base.AddAttributesToRender (writer);
// writer.AddAttribute(HtmlTextWriterAttribute.Href,Page.GetPostBackClientHyperlink(this,String.Empty));.
// }
protected virtual void OnClickPrevious(EventArgs e)
{
EventHandler clickPreviousHandler=(EventHandler)Events["ClickPrevious"];
if (clickPreviousHandler!=null)
{ clickPreviousHandler(this,e);
}
} #endregion
//protected override void RenderChildren(HtmlTextWriter writer)
//{
//}
}
}
但没有显示Page.Response.Write("you clicked the previous button");中输出的内容。???
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Diagnostics;
namespace EBusiness
{
/// <summary>
/// SimpleLinkButton 的摘要说明。
/// </summary>
public class SimpleLinkButton : System.Web.UI.Page
{
protected EBusiness.PostBack mylinkbtn;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.mylinkbtn.Init += new System.EventHandler(this.mylinkbtn_Init);
this.mylinkbtn.ClickPrevious += new System.EventHandler(this.mylinkbtn_ClickPrevious);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void mylinkbtn_ClickPrevious(object sender, System.EventArgs e)
{
Page.Response.Write("you clicked the previous button");
//可能没有触发事件。
} private void mylinkbtn_Init(object sender, System.EventArgs e)
{
}
}
}