J'ai ajouté dynamiquement un UserControl qui contient un CheckBox et une zone de texte:Ajout d'un gestionnaire d'événements CheckChanged à CheckBox dans un UserControl
<asp:CheckBox runat="server" ID="chk1" />
<asp:TextBox runat="server" ID="tb1" />
Sur Page_Load J'ajoute plusieurs d'entre eux les dynamiquement à un Groupe d'étude sur la page:
//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);
}
J'ai ensuite créé la méthode pour le gestionnaire d'événements dans la même page:
protected void CheckBox_CheckedChanged(object sender, EventArgs e)
{
string test = "breakpoint here";
}
Lorsque je place un point d'arrêt à l'intérieur de CheckBox_CheckedChanged, il n'est jamais atteint lorsque la case my est cliquée.
Quand je regarde la source de vue, c'est le code qui est généré:
<input id="ctl00_body_uc1_chk1" type="checkbox" name="ctl00$body$uc1$chk1" checked="checked" />
Ainsi, il ne semble pas ramasser quand j'ajoute le gestionnaire d'événements. C'est bizarre, parce que ça ramasse tout le reste.
Ai-je raté quelque chose?
Yep. C'était ça. Je vous remercie! –