请问楼上的,当点击LinkButton   的时候,它回传到后台了,按道理说是
执行了page_Load()之后,就要执行kk_Click() 为什么执行了page_Load()就结束了。

解决方案 »

  1.   


     protected   void   Page_Load(object   sender,   EventArgs   e) 
            {               DIV1.Controls.Clear(); 
                  LinkButton   kk   =   new   LinkButton(); 
                  kk.Text   =   "动态的link "; 
                  Kk.Click   +=   new   System.EventHandler(this.kk_Click);             //为什么没用 
                    DIV1.Controls.Add(kk);                         
    }
    把动态生成代码放到page_load当中去
      

  2.   

    to Debug_mq:
    服务器端对动态生成的控件没有任何记忆力,其所作的事情就只是按照流程解析成html输出到客户端;上面Button1_Click时
    动态生成了LinkButton,并做了事件绑定,对客户端来说只是对这个LinkButton加上了__doPostBack表示点击后需要回刷页面,其参数是这个LinkButton的id,而服务器端并不知道自己曾生成过这个控件;然后就是点击LinkButton回刷页面,此时服务器端得到的只是postback回来的LinkButton的id,发现aspx页面上不存在这个id,便不予理会直接往下执行,也就不可能知道LinkButton已经绑定了kk_Click事件,除非你在这之前再生成一遍LinkButton,相当于告诉自己页面上存在这个LinkButton才会执行
      

  3.   

    改为如下:protected void Page_Load(object sender, EventArgs e)
        {
            if (this.ViewState["NewLBControl"] != null && this.ViewState["NewLBControl"].ToString() == "1")
            {
                NewLBControl();
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            this.ViewState.Add("NewLBControl", "1");
            NewLBControl();
        }
        private void NewLBControl()
        {
            DIV1.Controls.Clear();
            LinkButton kk = new LinkButton();
            kk.Text = "动态的link";
            kk.Click += new System.EventHandler(this.kk_Click);      //为什么没用 
            DIV1.Controls.Add(kk);  
        }
        void kk_Click(object sender, EventArgs e)
        {
            Label1.Text = "ppppppppppppp";
            throw new Exception("The method or operation is not implemented.");
        } 
      

  4.   

    因为PageLoad()时,服务端已经将页面信息流传到了客户端,即Render方法已经执行完毕,所以,动态加入页面的控件代码要写到
    Page.OnInit(e EventArgs)方法里。其余做法同6楼。