2011-11-04 15 views
1

第一部分處於循環狀態。它創建了沒有問題的動態複選框。動態創建使用常用處理程序的多個控件

// All I am doing here is incrementing our session counter 
int id = Convert.ToInt32(Session["id"]); 
id++; 
Session["id"] = id; 

// Now I create my checkbox 
chkDynamic = new CheckBox(); 
chkDynamic.Text = "hey"; 
string chk = "chk" + id.ToString(); 

chkDynamic.ID = chk; 
chkDynamic.CheckedChanged += new EventHandler(this.chkDynamic_CheckedChanged); 
Panel1.Controls.Add(chkDynamic); 

我的事件處理程序沒有爲此接線。 Strangly如果我硬編碼的工作,但該ID僅用於循環的一個迭代,因爲如果我們硬編碼的ID,然後我們會碰上「多個ID錯誤」

protected void chkDynamic_CheckedChanged(object sender, EventArgs e) 
{ 
    if (chkDynamic.Checked) 
     Response.Write("you checked the checkbox"); 
    else if (!chkDynamic.Checked) 
     Response.Write("checkbox is not checked"); 
} 

回答

3

您需要檢查發件人您事件處理程序知道哪個複選框發送了事件:

protected void chkDynamic_CheckedChanged(object sender, EventArgs e) 
{ 
    if (((CheckBox)sender).Checked) 
     Response.Write("you checked the checkbox"); 
    else 
     Response.Write("checkbox is not checked"); 
} 
+0

您可以進一步解釋嗎?我嘗試了每種語法組合,並且我無法獲得上面的工作 – clamchoda

+0

我已經擴展了我的代碼來替換您的事件處理程序 – drdwilcox

+0

我已經從字面上複製/粘貼了您的代碼,並且事件現在不會觸發。沒有錯誤,只是沒有解僱。我知道這一定是正確的路線:( – clamchoda

相關問題