У меня есть UserControl, который содержит CheckBox и TextBox:
<asp:CheckBox runat="server" ID="chk1" />
<asp:TextBox runat="server" ID="tb1" />
На Page_Load я динамически добавляю несколько из них в Panel на странице:
//loop through the results from DB
foreach (Thing t in Things)
{
//get the user control
MyUserControl c1 = (MyUserControl )Page.LoadControl("~/UserControls/MyUserControl.ascx");
//set IDs using public properties
c1.ID = "uc" + t.ID;
c1.CheckBoxID = "chk" + t.ID;
cl.TextBoxID = "tb" + t.ID;
//add it to the panel
myPanel.Controls.Add(c1);
//add the event handler to the checkbox
((CheckBox)myPanel.FindControl(c1.ID).FindControl(c1.CheckBoxID)).CheckedChanged += new EventHandler(CheckBox_CheckedChanged);
}
Затем я создал метод для обработчика событий на той же странице:
protected void CheckBox_CheckedChanged(object sender, EventArgs e)
{
string test = "breakpoint here";
}
Когда я ставлю точку останова внутри CheckBox_CheckedChanged, она никогда не срабатывает, когда щелкают по моему флажку.
Когда я смотрю на источник представления, это генерируемый код:
<input id="ctl00_body_uc1_chk1" type="checkbox" name="ctl00$body$uc1$chk1" checked="checked" />
Итак, похоже, что он не срабатывает, когда я добавляю обработчик событий. Хотя это странно, потому что оно подхватывает все остальное.
Я что-то упустил?