Hinzufügen eines CheckChanged event-handler CheckBox innerhalb eines UserControl dynamisch Hinzugefügt
Ich habe ein Benutzersteuerelement enthält ein Kontrollkästchen und ein Textfeld:
<asp:CheckBox runat="server" ID="chk1" />
<asp:TextBox runat="server" ID="tb1" />
Auf Page_Load ich bin hinzufügen, einige von Ihnen dynamisch Sie ein Panel auf der Seite:
//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);
}
Dann habe ich die Methode für den event-handler in der gleichen Seite:
protected void CheckBox_CheckedChanged(object sender, EventArgs e)
{
string test = "breakpoint here";
}
Wenn ich einen Haltepunkt in CheckBox_CheckedChanged es ist nie der hit, wenn meine checkbox geklickt wird.
Wenn ich mir den Quelltext anzeigen, dies ist der code, der generiert wird:
<input id="ctl00_body_uc1_chk1" type="checkbox" name="ctl00$body$uc1$chk1" checked="checked" />
Also, es scheint nicht zu sein, aufnehmend, wenn ich den event-handler. Es ist seltsam, denn es nimmt alles andere aber.
Bin ich etwas fehlt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
"Wenn ich einen Haltepunkt in CheckBox_CheckedChanged es ist nie der hit, wenn meine checkbox geklickt wird."
Wenn Sie möchten, dass das Ereignis ausgelöst wird, wenn das Kontrollkästchen geklickt wird, müssen Sie auch legen Sie AutoPostBack = true auf das Kontrollkästchen. Wenn Sie setzen Sie den cursor in das Textfeld und drücken Sie die EINGABETASTE (wodurch der post zurück), hat das Ereignis Feuer?
Fügen Sie die CheckBox.AutoPostBack Eigentum und setzen Sie ihn auf "true".