我在程序中利用循环动态添加了10个按钮,现在我要给这些动态添加的按钮添加事件,应该怎么做?
public void AddControls(Object Sender, EventArgs e)
    {
        for (int i = 0; i < 5; a++)
        {
            Button myBtn = new Button();
            myBtn.ID = "myBtn" + i;
            myBtn.Text = "编辑";
            myBtn.Click += new System.EventHandler(UpdateClick);        
             PlaceHolder1.Controls.Add(myBtn);
        }
    }      protected void UpdateClick(object sender, EventArgs e) 
     { 
         Button button = (Button)Sender; 
         Response.Redirect("Default.aspx"); 
     } 我动态添加的按钮的事件触发不了,点击时,仅仅是刷新了页面,如何针对动态按钮的ID来触发相应的事件???

解决方案 »

  1.   

    每个按键都要加个独立的CLICK事件,你这5个都是同一个UpdateClick事件.
      Button myBtn = new Button();
                myBtn.ID = "myBtn" + i;
                myBtn.Text = "编辑";            myBtn.Click += new System.EventHandler(UpdateClick(1-5));       
                PlaceHolder1.Controls.Add(myBtn); 
      

  2.   

    额………循环明明五次,怎么加了10个?还有循环时a++何解?
    添加时最好指定Location
    程序应该是没错的,可以写个简单的测试下
    protected void UpdateClick(object sender, EventArgs e)
            {
                Button button = (Button)sender;
                MessageBox.Show(button.Name);
            } 
    就可以了!我试了下Winform下是没有问题的!!
      

  3.   

    我在程序中利用循环动态添加了5个按钮,现在我要给这些动态添加的按钮添加事件,应该怎么做? 
    for (int i = 0; i < 5; i++) 
      
    不小心写错了。
      
    每个按键都要加个独立的CLICK事件,按钮是动态生成的,怎么会知道将来有多少啊?那写多少事件???
        
      

  4.   

    因为你增加的是服务器端控件,服务器端控件响应的是服务器端事件,一响应页面就提交了,原来的按钮相当于重新增加了,所以你的事件没有响应你可以通过增加html按钮来解决这个问题,html控件响应的是客户端事件,不跟服务器进行交互,通过ajax进行提交数据