读书人

写了个控件可事件总不执行,该怎么处

发布时间: 2012-04-11 17:42:33 作者: rapoo

写了个控件,可事件总不执行
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后被自动释放而被释放掉了,这个阶段注册时间处理程序毫无意义。

读书人网 >asp.net

热点推荐