2012-04-11 9 views
0

In meiner Beispielapp.net App, die here gefunden werden kann, erstelle ich dynamische Steuerelemente auf Page Init. Wenn der Benutzer dann Text in die Steuerelemente eingibt und auf die Schaltfläche geklickt wird, sollten alle Steuerelemente mit neuen Werten neu erstellt werden.asp.net dynamische Steuerelemente wierd Werte Problem

Die Seite überschreibt die ausgefüllten Werte in der ersten Zeile mit den manuell eingegebenen Daten des Benutzers.

Haben Sie Ideen, wie Sie dies verhindern können, ohne auf HTML-Steuerelemente oder MVC zu wechseln?

Antwort

0

Ich landete eine Problemumgehung, um den Zustand selbst zu erhalten, wo ich eine querystring Variable hinzufüge, um meinem Code zu sagen, wenn es zuerst lädt oder postback. Das I wurde auf die gleiche Seite mit der neuen Variable umgeleitet, die das Löschen der Steuerelemente erzwang.

Ein anderer Weg wäre gewesen, IsPostBack beim Laden des Formulars zu überprüfen und die ViewState-zugewiesenen Werte wieder von meinen gespeicherten Objektwerten zu ersetzen.

Noch kann nicht warum, indem Viewstate auf Seite und Steuerelemente deaktivieren, es füllt immer noch meine dynamischen Steuerelemente mit Viewstate-Werten.

0

Der Viewstatus ist im Page_Init-Ereignis nicht verfügbar. Verschieben Sie die Erstellung in das Ereignis Page_Load.

+0

Ich möchte nicht das Viewstate verwenden (versucht, es überall zu deaktivieren) und page_Load ist zu spät im Seitenlebenszyklus, um dynamische Steuerelemente hinzuzufügen, so dass sie nach dem Postback bestehen bleiben. Manchmal werden die Steuerelemente unverändert verwendet, aber manchmal werden sie aktualisiert. Dieses Problem tritt auf, wenn die Steuerelemente wie in der Beispielanwendung aktualisiert werden sollen. – DeWet

+0

Ich verstehe, wo Sie kommen, wenn Sie den veiwstate nicht verwenden möchten. Wenn Sie jedoch möchten, dass die Werte im Steuerelement beibehalten werden, müssen Sie viewstate verwenden oder die Werte manuell beim Postback-Steuerelement festlegen. –

+0

Ich behalte Zustand im Backend also keine Notwendigkeit für Viewstate. Das Problem hier ist, dass ich einen Weg finden kann, die Seite dazu zu bringen, den viewstate/controlstate zu ignorieren, um Werte nicht zu überschreiben, die vom Backend-Zustandssystem kommen. Bisher gelang es mir nur, es mit einer Response.Redirect auf die gleiche Seite zu arbeiten, wo ich eine querystring var hinzufügen musste, um meinem Code zu erzählen, dass ich einen Postback gemacht habe ...... großer Hack. – DeWet