2009-05-08 4 views
0

Ich habe mir die Haare ausgezogen und ein bisschen im Internet gesucht, um eine elegante Lösung für mein Problem zu finden.Dynamic Controls, Update Panels und Events - der beste Weg, um mein Ergebnis zu erreichen

Ich habe eine ProductImages.aspx Seite. Sie zeigt alle mit diesem Produkt verknüpften Bilder in einer dynamisch erstellten Liste an. Die Ereignisse sind mit jedem Bild verbunden, damit Sie es aktualisieren können.

Das funktioniert gut.

Allerdings habe ich am Ende eine Option, mit der ich ein neues Bild hinzufügen kann. Dies ist eine Schaltfläche, die einen Aufruf der AddImage-Methode auslöst.

Nun, was passiert ist, dass die ursprünglichen Steuerelemente erstellt werden und der Seite mit Ereignissen hinzugefügt werden. Dann das Button-Ereignis, wenn es ausgelöst wird, das alle vorhandenen Bild-Steuerelemente neu erstellt und ein neues. Fügen Sie diesen Punkt dem neuen Bildsteuerelement hinzu, nachdem das OnInit keine Ereignisse angehängt hat, da die Ereignisse NACH dem OnInit hinzugefügt wurden.

Ich kann eine Response.Redirect tun, um die Seite und feuern die OnInit neu zu laden wieder die Ereignisse verkabeln, aber dies scheint sehr unelegant und zerstört den Punkt Update Panels verwenden.

Irgendwelche Ideen?

Antwort

1

Ich denke, Sie könnten immer das Bild Upload-Steuerelement in einem Div laden und haben einen Javascript-Link, um das Display-Attribut des div.

Oder verwenden Sie CollapsiblePanels von AjaxToolKit, um das Upload-Formular auszublenden und anzuzeigen.

Ich denke, eine dieser Möglichkeiten wäre eleganter als eine Post zurück (auch wenn es in einem UpdatePanel ist), nur um das Bild Upload-Formular abzurufen.

0

Ihre Fragen klingen so, als würden Sie sagen, dass Sie die Steuerelemente nicht in OnInit einfügen können, da sie nur beim ersten Laden der Seite ausgelöst werden. Dies ist nicht der Fall - OnInit wird jedes Mal ausgelöst, wenn die Seite geladen wird (einschließlich Postbacks), sodass Sie Ihre Steuerelemente auch bei Verwendung eines Aktualisierungsfensters neu erstellen können.

Eine Eigenschaft, die ist unterscheidet zwischen der anfänglichen Ladevorgang und die Postbacks ist die Page.IsPostback -Eigenschaft, die Sie einfach Aktionen beim ersten Laden der Seite ausführen können.