Ich versuche, einen Klick Ereignishandler für meine 4 Schaltflächen, die ich dynamisch generiert habe, ohne Code in Seiteninitialisierung oder oninit zu setzen. Ich habe einen Knopf, der einmal geklickt hat, erzeugt 4 weitere Knöpfe. Der Click-Ereignishandler für diese 4 Schaltflächen funktioniert nicht. Hier ist der Code. Hat jemand eine Möglichkeit gefunden, die Click-Ereignisse in asp.net C# zu verwenden, ohne es zuerst in page_load
zu setzen? Wenn ich dieses Problem lösen kann, kann ich mein eigentliches Problem in einem größeren Szenario lösen .:Wie dynamische Klick Ereignishandler zu verwenden, ohne Seiteninit oder Seite laden
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 4; i++)
{
Button b = new Button();
b.ID = i.ToString();
b.Text = "ClickMe";
b.Visible = true;
b.Click += new EventHandler(b_click);
PlaceHolder1.Controls.Add(b);
}
}
void b_click(object sender,EventArgs e)
{
Label1.Text = "ok";
}
Der Grund dafür, dass der Event-Handler nicht funktioniert, ist, dass der Control-Tree beim Postback nicht korrekt neu erstellt wird. Es gibt ein spezielles Seitenereignis, das Sie überschreiben sollten, um die Schaltflächen vor dem Laden des Ansichtsstatus neu zu erstellen, damit das Ereignis ausgelöst wird. –
Ist die Anzahl der Tasten statisch? Wenn Sie wissen, dass es nur vier Tasten gibt, verstecken Sie die Tasten einfach so lange, bis Sie sie brauchen. Auf diese Weise sollte Ihr Event-Kabel wie erwartet ohne zusätzliche Eingriffe funktionieren. – dstepan
@ MattiasÅslund Ja, das ist die Init-Methode. Offensichtlich weiß der OP genau, was er tun muss, und doch sagt er ausdrücklich, dass er das nicht tun will. – Servy