2008-10-06 4 views
6

Ich versuche, ein benutzerdefiniertes Steuerelement, das ein "Gridview" wie Steuerelement aber speziell für Geschäftsobjekte, die bestimmte benutzerdefinierte Schnittstellen implementieren, zu erstellen.Wie aktiviere ich ViewState für untergeordnete benutzerdefinierte Steuerelemente, wenn diese im übergeordneten Element deaktiviert sind?

Dabei bin ich auf das folgende Problem gestoßen.

Ich habe ein Steuerelement, das ich ViewState deaktiviert haben (und ich möchte es nicht wieder aktivieren) und es hat ein untergeordnetes Steuerelement, dass ich ViewState aktiviert werden soll. Ich kann nicht scheinen, den Aussichtspunkt auf der Kindkontrolle zu erhalten, um zu arbeiten, weil seine Eltern behindert sind. Hat jemand irgendwelche Ideen, wie man das zur Arbeit bringt?

Antwort

7

Sie können viewstate nicht für ein Steuerelement aktivieren, das sich in einem anderen Steuerelement befindet, für das viewstate deaktiviert ist.

Die einzige Option ist, dass Sie es für das äußere Steuerelement aktivieren und dann für alle darin enthaltenen Steuerelemente ausschalten, außer für das Steuerelement, das Sie benötigen, um anzuzeigen.

Die EnableViewState-Eigenschaft für einen Container überschreibt das Verhalten aller Steuerelemente innerhalb dieses Containers.

Viel Glück!

EDIT: Möglicherweise möchten Sie an Ihrem CreateChildContols() Methode suchen und die Kontrollen aufzuzählen von dort für jede der Kontrollen innerhalb der Custom Controls mit dem EnableViewState Eigenschaft deaktivieren Ansichtszustand.

+1

Jason ist richtig, wenn es über Sie deaktiviert ist, können Sie es nicht ermöglichen, weiter nach unten. – Tom

0

Wenn Sie glücklich sind, Daten manuell in den ViewState zu setzen (anstatt ASP.NET den Status Ihres Steuerelements für Sie beizubehalten), können Sie Elemente direkt in den ViewState der Seite und nicht in den ViewState Ihrer einfügen Steuerung.

I.e. anstatt zu sagen:

this.ViewState["someKey"] = someValue; 

sagen:

this.Page.ViewState["someKey"] = someValue; 

Vorsicht obwohl - wenn Sie mehr als eine Instanz der Kontrolle auf der Seite haben, werden Sie müssen sicherstellen, dass sie verschiedene Schlüssel verwenden!