2009-06-03 5 views
0

Ist es möglich, ein Postback durchzuführen und den Viewstatus den ausgewählten Wert auf den folgenden Code erinnern?Dynamische Steuerelemente in asp.net

Scheint placeholder1.controls.clear() löscht es.

+0

Versucht, es in Page_Init hinzuzufügen, hat nicht funktioniert. – maxp

Antwort

0

Warum verstecken Sie nicht einfach den PlaceHolder, indem Sie Visible auf false setzen? Sehen Sie sich auch Truly Understanding Dynamic Controls an, wenn Sie dynamisch Inhalte einspeisen müssen, da dynamische Steuerelemente alles andere als einfach sind.

1

Versuchen Sie, die PlaceHolder1.Controls.Clear(); Methode zu entfernen,

und bewegen Sie Ihren Bind() Anruf aus Page_Load und in OnInit

Sie gehen den Weg in Life Cycle Probleme laufen sind Sie Dinge dort als Last zu tun viewstate & Ereignisauslösungscode ist bereits aufgetreten, bevor Sie Ihre Steuerelemente neu erstellen

+0

Durch das Entfernen von placeholder1.controls.clear() wird ein Fehler angezeigt, nachdem versucht wurde, ein Steuerelement mit derselben ID zweimal zu erstellen. – maxp

+0

nein wird es nicht. Die Steuerelemente werden bei jedem nachfolgenden Aktualisierungspostback dynamisch neu erstellt. PlaceHolder1.Controls enthält nichts an erster Stelle. Probieren Sie es aus –

+0

Ich interpretierte Ihre Nachricht als Verschieben der Bind(); von Page_Load (o, e) zu Page_Init (o, e). Nachdem das ddl ein postbackould verursachen würde, würde Page_Init() Bind(); auslösen, dann würde SelectedIndexChanged() ausgelöst werden, was dazu führt, dass Bind() erneut ausgeführt wird(); Daher verursacht eine Ausnahme mit zwei Steuerelementen in Platzhalter1 mit der gleichen ID. Habe ich Ihr OnInit falsch interpretiert? – maxp

1

Versuchen Sie, bind() von Page_Init() aufzurufen.

ViewState wird nach Page_Init(), aber vor Page_Load() geladen. Wenn Sie also bind() von Page_Load() aufrufen, rufen Sie es auf, nachdem .NET versucht hat, den ausgewählten Wert Ihrer DropDownList festzulegen.

1

Ist es möglich, ... den Viewstatus den ausgewählten Wert zu speichern ...?

Viewstate Daten auf Postbacks wiederhergestellt vor das Load-Ereignis. Wenn Sie wollen, dass ViewState sich an irgendetwas für ein Steuerelement erinnert, muss das Steuerelement ebenfalls auf der Seite vor dem Load-Ereignis vorhanden sein.

Ich vermute, ein Teil Ihres Problems besteht darin, dass Sie Ihr Dropdown-Steuerelement neu erstellen, wenn es ausgewählte Indexänderungen gibt, aber nirgendwo in diesem Code setzen Sie den ausgewählten Index und Sie zerstören daher die Auswahl jedes Mal, wenn Sie es festlegen.