2009-05-14 4 views
1

ich einen Imagebutton zu einer Tabellenzelle in einer neuen Zeile zu schreiben, wenn ein Benutzer ein Element in einer Liste auswählt:Wie ein Handelte zu einem dynamischen Image in einem Ajax-Panel Postbacks bekommen

ImageButton imgbtnRemove = new ImageButton(); 
imgbtnRemove.ID = "uxStandardLetterDeleteImage_" + items.letterName; 
imgbtnRemove.CommandName = "uxStandardLetterDeleteImage_" + items.letterName; 
imgbtnRemove.ImageUrl = items.remove; 
imgStatus.AlternateText = "Remove"; 
tRow.Cells[3].Controls.Add(imgbtnRemove); 

Wenn die neue Image angeklickt ist, kann ich nicht einen Griff dazu bekommen. Ich sehe es im Page_PreRender-Event, wo ich auch die Tabelle bei jedem Postback neu lade.

string returnData = Request.Form.ToString(); 

sondern durch die Form steuert Iterieren Bilder:

if (c is System.Web.UI.WebControls.Button || 
c is System.Web.UI.WebControls.ImageButton) 

es nicht finden. Ich kann es finden, wenn ich manuell ein setzt in:

imgbtnRemove.Click += new System.Web.UI.ImageClickEventHandler(this.ButtonClick); 

im Page_Load und es dann in dem Click-Ereignisse greifen:

switch (((System.Web.UI.WebControls.ImageButton)sender).CommandName) 
... 

sondern weil es neue Zeilen hinzugefügt und gelöscht werden, dies wird eher hässlich programmatisch. Ich denke, es muss eine elegante Lösung für dynamische Imagebutton-Erstellung und retrieval on the fly von serverseitigem Code geben. Ich habe viel gegraben, aber dieser hier stolpert mich.

Vielen Dank im Voraus ...

Antwort

2

Wenn Sie während der Ereignisbehandlung Phase des Lebenszyklus Seite (zum Beispiel in dem Punkt ausgewählten Ereignisse) dynamische Steuerelemente erstellen, dann wird die Steuerung auf dem nächsten verschwunden sein Postback.

Damit dynamische Steuerelemente mit ViewState registriert werden können, müssen sie in der Init-Phase des Ereignislebenszyklus erstellt werden.

Sie sagen auch, dass Sie durch die Steuerelemente des Formulars iterieren ... wenn Sie die imagebutton den Zellen der Tabelle hinzufügen. Navigieren Sie die Kontrollhierarchie rekursiv ab, um nach der Schaltfläche image zu suchen?

+0

Verschieben der Tabelle Erholung zu OnInit erlaubt mir, das Steuerelement in meiner (rekursive) Steuermethode zu finden, aber ich habe die neue Zeile hinzufügen, sobald das Panel geladen ... aber ich denke, ich kann es ausarbeiten. Vielen Dank! – 32U