Ich füge ein LinkButton-Steuerelement dynamisch in einen PlaceHolder ein. Wenn ich eine neue Instanz des LinkButton auf jedem OnInit() hinzufüge, funktioniert OnClick-Handler für dieses LinkButton.ASP.NET Dynamisch hinzugefügt LinkButton - OnClick-Handler wird nicht aufgerufen
Wenn ich jedoch die Instanz von LinkButton in der Sitzung speichern und dann in der Sammlung von Steuerelementen des PlaceHolder hinzufügen, schlägt LinkButton.OnClick fehl.
Gibt es eine Möglichkeit zur Wiederverwendung von Steuerelementen, die ich in der Sitzung in einem bestimmten Szenario speichern? Sie jedes Mal neu zu erstellen, ist kaum eine Option.
Nur als eine Randnotiz - es ist eine geerbte Anwendung in 1.1, die ich gerade auf 3.5 migriert. Der "gebrochene" Ansatz schien in 1.1 zu funktionieren.
Danke für alle Antworten.
public static void Clicked(object sender, EventArgs e) {
Debugger.Break();
}
protected override void OnPreInit(EventArgs e) {
base.OnPreInit(e);
InitLinkButton();
}
private void InitLinkButton() {
var lb = new LinkButton();
plOne.Controls.Add(lb);
lb.ID = "lb";
lb.Text = "I will work.";
lb.Click += Clicked;
plOne.Controls.Add(lb);
LinkButton lb2 = null;
if (Session["lb2"] == null) {
lb2 = new LinkButton();
lb2.ID = "lb2";
lb2.Text = "I won't work.";
lb2.Click += Clicked;
Session["lb2"] = lb2;
} else {
lb2 = (LinkButton)Session["lb2"];
}
plOne.Controls.Add(lb2);
}
Die Steuerelemente in Ihrem ASPX werden bei jedem Postback neu erstellt. Dynamische Steuerelemente _müssen_ für jedes Postback neu erstellt werden. –