Click-Ereignis für dynamisch erzeugte buttons, die
In meiner Anwendung habe ich buttons dynamisch erstellt werden.Ich bin bemüht, das ein onclick-event für die Tasten und ändern Sie den text der Schaltfläche, die ich anklicken.Ich habe versucht den folgenden code für diese, sondern seine nicht funktioniert.Wie kann ich dies tun?.Alle suggesions?
Code:
for (int i = 0; i < 5; i++)
{
lbl = new Button[5];
lbl[i] = new Button();
lbl[i].Text = "hi";
lbl[i].Width = 30;
lbl[i].Click += new EventHandler(lbl_click);
//lbl[i].CssClass = "label";
div1.Controls.Add(lbl[i]);
}
Click-Ereignis:
protected void lbl_click(object sender, EventArgs e)
{
Button[] lbl = sender as button[];
lbl[i].Text = "clicked";
}
- Ist dies Ihre tatsächliche code? Sind Sie neu das button-array von Grund auf, sowohl in Ihrer
Click
handler und in jeder iteration der Schleife in deinem ersten code-snippet. (Edit nur Feste das erste problem.) - Du wirst die Definition der for-Schleife OnInit-Ereignis des page life cycle
- Ah, und deine Bearbeitung auch eingeführt, ein weiteres problem:
sender
ist einButton
, nicht einButton[]
. - ich habe versucht, Steves Antwort, es funktioniert in der pageload-aber nicht innerhalb einer Methode.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie neu das array von Schaltflächen, die in Ihrem event-handler, aber das array wird nicht gefüllt, mit den buttons erstellt vor. Es ist leer und geben Sie eine null-Verweis-Ausnahme, wenn Sie versuchen, ein element dieses Arrays (
null.Text
, es wird nie funktionieren).Das sender-Objekt statt, repräsentieren die Taste, die der Benutzer geklickt hat.
Auch, wenn Sie müssen wissen, welche spezifischen Schaltfläche geklickt wurde, dann schlage ich vor, Sie etwas hinzufügen, um Sie zu unterscheiden, die bei Erstellung:
Beispielsweise verwenden Sie die name-Eigenschaft:
Bemerken, dass habe ich verschoben in die array Deklaration und Initialisierung außerhalb der Schleife schaffen, die jedes einzelne element des Arrays (der Schaltfläche).
Related
Spalte auf der rechten Seite. Es gibt zahlreiche Fragen, die an diesem problem.