因为代码太多,我简要写一下大概思路。
public class Logs : System.Web.UI.Page
{
private System.Web.UI.WebControls.Button btnok;  //定义按钮
protected System.Web.UI.HtmlControls.HtmlGenericControl DIV1; //容器
private void Page_Load(object sender, System.EventArgs e)
                  {
                        if(!IsPostBack)
                        {
                             fun1();
                        }
                        else
                        {
                            fun2()
                        }
                  }
                  private void fun1()
                  {
                     //这里,我添加一些表格,和一些TextBox和Button,如
                     Table tab=new Table();
                     TextBox txt=new TextBox();
                     btnok=new btnok();
                     btnok.Click+==new EventHandler(btnok_Click);
                     DIV1.Controls.Add(tab);
                     DIV1.Controls.Add(txt);
                     DIV1.Controls.Add(btnok);  
                  }
                  private void fun2()
                  {
                   //一些代码;
                  }
                  private void btnok_Click(object sender, System.EventArgs e)
                  {
                      执行一些代码以后
                      fun1();
                  }现在的问题就是,当在
else
    {
          fun2()
          加入fun1() 
    }
btnok事件可以得到触发,否则便不能触发,即使把btnok=new btnok();
btnok.Click+==new EventHandler(btnok_Click);
写进else里也还不行。
请问这样的问题该如何解决?

解决方案 »

  1.   

    不大明白你的意思
    btnok=new btnok();
    btnok.Click+==new EventHandler(btnok_Click);
    这个只要条件满足都应该执行的啊
      

  2.   

    由程序动态构造出来的控件,一定不要包含在 (!IsPostBack) 里……要每次刷新/访问页面的时候都生成控件才行。
      

  3.   

    动态的控件每次pageload时都要重新添加的。同时注意回送时控件值的处理
      

  4.   

    应该是这样
    btnok=new btnok();
    btnok.Click += new EventHandler(btnok_Click);
      

  5.   

    http://www.cnblogs.com/lovecherry/archive/2005/04/16/138968.html
      

  6.   

    你也可以把它手动添加到页面的ViewState中然后在pageload时对于postback的, btnok=(Button)ViewState(
      

  7.   


    btnok=new btnok();
    btnok.Click+==new EventHandler(btnok_Click);
    写进else里 和把fun1()  写进else里 应该是一样的(指EventHandler)你再仔细跟踪一下,是不是其它地方有什么问题?
      

  8.   

    Dynamic created controls should be created in Page_Load in any case, including when the page is posted back.
    So you must write:
    private void Page_Load(object sender, System.EventArgs e)
                      {                        fun1();                        if(IsPostBack)
                            {
                                fun2()
                            }
                      }
    to active the btnon_Click event.