2016-11-10 73 views
2

我將x個按鈕添加到一個asp.net web應用程序。這是我的代碼:動態添加ASP.Net按鈕無法調用Click或CommandArgument事件

int i = 0; 
foreach(var foo in bar){ 
    Button b = new Button(); 
    b.ID = "button" + i.ToString(); 
    b.CommandName = "var_value"; 
    b.CommandArgument = foo; 
    b.Command += Execute_Command; 

    //add to panel p 
    p.Controls.Add(b); 

    i++; 
} 

private void Execute_Command(object sender, CommandEventArgs e){ 
    //do stuff 
} 

Execute_Command方法從不調用。按鈕顯示得很好,當我調試時,它們有命令名和正確的命令參數分配給它們。我不確定我做錯了什麼。

回答

0

按鈕是動態創建的,所以他們不是在控制樹。結果,當你觸發一個點擊事件時,它不能觸發Command事件。

爲了解決這個問題,你就需要重新加載動態創建按鈕Page_Init的Page_Load事件上每個回發相同的ID

例如,

protected void Page_Init(object sender, EventArgs e) 
{ 
    int i = 0; 
    foreach(var foo in bar){ 
     Button b = new Button(); 
     b.ID = "button" + i.ToString(); 
     b.CommandName = "var_value"; 
     .CommandArgument = foo; 
     b.Command += Execute_Command; 

     //add to panel p 
     p.Controls.Add(b); 

     i++; 
    } 
} 
+0

這個工作!包含此代碼的方法在if(!IsPostBack)中被調用謝謝! – Skettenring