2008-12-05 54 views
5

Ich habe eine aspx-Seite, die einige Steuerelemente dynamisch auf Postback lädt (dh wenn ein Klick-Ereignis passiert) und sie zu einem Platzhalter hinzufügen. Abhängig davon, was geklickt wird, muss ein anderer Satz von Steuerelementen geladen werden.
Dies funktioniert perfekt das erste Mal, aber wenn ich die Platzhalter-Steuerelemente löschen und versuchen, eine andere Reihe von Steuerelementen dynamisch zu laden, erhalte ich den folgenden Fehler: "Laden von Viewstate. Der Steuerelementbaum, in dem Viewstate geladen wird muss übereinstimmen der Kontrollbaum, mit dem der Viewstate während der vorherigen Anfrage gespeichert wurde. "Fehler beim Laden der Ansichtsstatus beim dynamischen Laden verschiedener Steuerelemente

Dies passiert auch, wenn ich ViewState.Clear().

Gibt es eine Möglichkeit, dies zu tun?

Antwort

-1

Beim dynamischen Erstellen von Steuerelementen müssen Sie sicherstellen, dass jedes Steuerelement, das Sie erstellen, eine eindeutige ID hat.

Ich denke, was hier passiert ist, dass Sie Ihre Steuerelemente benennen wie: Control1, Control2, Control3.

Und vielleicht, wenn Sie klicken, um einen anderen Satz von Steuerelementen zu erstellen, können Sie einen anderen Objekttyp denselben Namen geben, sagen wir Control1 wurde zuerst wie ein Textfeld erstellt und wenn Sie ein Kontrollkästchen aktivieren.

Ohne zu sehen, der Code ist schwer zu sagen, warum ViewState.Clear() funktioniert nicht, aber wenn Sie versuchen, den Viewstatus zu löschen Sie brauchen kein Postback, können Sie versuchen, eine neue Seite anfordern und übergeben Sie die Argumente auf der Querystring anstelle eines Postbacks. Dies wird auch schneller, da Sie die ViewState-Informationen nicht zurück an den Server senden müssen.

Verwandte Themen