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)
{
   ......
}
}

解决方案 »

  1.   

    RenderControl?我不知道怎样能够在三言两语中给你说清楚了!
    首先,你要理解什么叫做页面(以及页面上所有控件的)生命周期,理解状态以及事件触发的机理(IPostbackDataHandler、IPostbackEventHandler分别被页面什么时候调用、每一次调用都处理什么任务)。你的事件注册只有在Page_Load结束之前完成,才能被触发。在Render阶段,紧接着这个控件就随着页面对象输出html后被自动释放而被释放掉了,这个阶段注册时间处理程序毫无意义。
      

  2.   

    不是RenderControl
    我是说运用控件后
    Page_OnClick并没有执行
      

  3.   

    我知道,是你没有懂我的意思。你的控件是     protected override void RenderControl(HtmlTextWriter writer) 中创建的,这个方法之后整个页面对象(以及其上的所有子控件)就释放掉了,这里注册事件处理毫无意义。只有在Page_Load结束之前创建的控件,才需要注册事件处理。
      

  4.   

    说的直接一点(举一个例子),你的 BtnPrev 和 BtnNext 应该放在 Load 事件中来创建,而不是写到 RenderControl 方法中。