写了个控件,可事件总不执行
public class xRepeater : Repeater
{
protected override void RenderControl(HtmlTextWriter writer)
{
HtmlGenericControl pl = new HtmlGenericControl();
System.Web.UI.WebControls.Button BtnPrev = new System.Web.UI.WebControls.Button();
BtnPrev.ID = "prev";
BtnPrev.Attributes.Add("CssClass", "goBtn");
BtnPrev.Style.Add("height", "21px");
BtnPrev.Click += new System.EventHandler(Page_OnClick);
BtnPrev.Text = "上一页";
System.Web.UI.WebControls.Button BtnNext = new System.Web.UI.WebControls.Button();
BtnNext.ID = "next";
BtnNext.Attributes.Add("CssClass", "goBtn");
BtnNext.Style.Add("height", "21px");
BtnNext.Click += new System.EventHandler(Page_OnClick);
BtnNext.Text = "下一页";
pl.Controls.Add(new LiteralControl(pager));
pl.Controls.Add(BtnNext);
pl.Controls.Add(BtnPrev);
//this.Controls.Add(pl);
StringWriter sw = new StringWriter();
HtmlTextWriter tw = new HtmlTextWriter(sw);
pl.RenderControl(tw);
writer.Write(sw.ToString());
base.RenderControl(writer);
}
private void Page_OnClick(object sender, System.EventArgs e)
{
......
}
}
[解决办法]
RenderControl?
我不知道怎样能够在三言两语中给你说清楚了!
首先,你要理解什么叫做页面(以及页面上所有控件的)生命周期,理解状态以及事件触发的机理(IPostbackDataHandler、IPostbackEventHandler分别被页面什么时候调用、每一次调用都处理什么任务)。
你的事件注册只有在Page_Load结束之前完成,才能被触发。在Render阶段,紧接着这个控件就随着页面对象输出html后被自动释放而被释放掉了,这个阶段注册时间处理程序毫无意义。