Dynamisches Hinzufügen eines Steuerelements zu einer Liste von Steuerelementen

8

Ich habe eine Webseite, auf der Benutzer Kundendaten eingeben müssen. Sie können von 0 bis unendlich viele Kontakte eingeben.

Ich habe diesen Seitencode auf der Seite erstellt:

%Vor%

In meinem Code hinter habe ich folgendes hinzugefügt:

%Vor%

Dieser Code funktioniert nicht, da ViewState nicht alle Steuerdaten speichern kann. Ich kann mir jedoch keine andere Möglichkeit vorstellen, die Steuerelemente zu speichern, die bereits hinzugefügt wurden.

Der Viewstatus des asp:PlaceHolder -Steuerelements speichert nichts, und ich brauche die Steuerelemente, um gespeichert zu werden, so dass, wenn ein Benutzer einige Daten in das erste Steuerelement eingibt, dass die Daten nicht verloren gehen, wenn sie ein zweites hinzufügen und so weiter.

    
Ben Hoffman 07.02.2011, 13:52
quelle

6 Antworten

1

Anstatt das gesamte Steuerelement zu speichern, speichern Sie einfach die zugrunde liegenden Daten in der Sitzung und erstellen Sie das Steuerelement aus diesen Daten jedes Mal neu, wenn Sie die Seite erneut laden.

    
James King 07.02.2011, 14:19
quelle
0

Ich bin mir nicht sicher, ob dies der beste Weg ist, Kontakte dynamisch hinzuzufügen. Wäre es nicht besser, Steuerelemente über jquery zu erstellen und Daten zur Erstellung an die Webmethode zu senden?

    
gor 07.02.2011 14:16
quelle
0

Es wäre besser, die Anzahl der Steuerelemente im Viewstate zu speichern, um sie stattdessen hinzuzufügen ... Und dann fügen Sie sie in Page Init oder PreInit ... hinzu. ViewState würde dann für jedes der dynamischen Steuerelemente beibehalten. Dies wäre natürlich Postbacks nach dem Button-Klick.

HTH.

    
Brian Mains 07.02.2011 14:17
quelle
0

Speichern Sie die Anzahl der Steuerelemente, die der Benutzer im Ansichtszustand eingegeben hat. Überschreiben Sie die LoadViewState-Seitenmethode und fügen Sie die Anzahl der Steuerelemente dort hinzu. Das Framework wird dafür sorgen, dass die geposteten Daten für Sie in die Controls geladen werden. Sie werden keine Informationen verlieren. Sie müssen nur sicherstellen, dass Sie die Steuerelemente hinzufügen, BEVOR der Anzeigestatus wiederhergestellt wird.

    
DancesWithBamboo 07.02.2011 16:33
quelle
0

Speichern Sie es in der Sitzung statt Viewstate. Es ist genauso schlimm, aber es wird funktionieren!

    
flush96 23.02.2011 05:42
quelle
0

Ich denke, dass Sie sich nicht auf einen temporären Speicher verlassen sollten - Viewstate, Session oder sonst.

Sie scheinen Ihren .ascx zu verwenden, als ob ich normalerweise eine Klasse benutzen würde ... Die Benutzerkontrolle wird jedoch größer, denke ich, da sie viel HTML enthält (?).

Wie auch immer, eine generische Liste einer Klasse wäre ... mindestens kleiner.

Aber ansonsten ist mein liebster Ansatz, einfach jeden Datensatz in eine Datenbank einzufügen, wenn es fertig ist (eins nach dem anderen) - zumindest für manuelle Eingaben. Das ist mein Eindruck von dem, mit dem Sie arbeiten. Zum Beispiel mit einer Listenansicht, Detailsview, Gridview, etc.

    
Chains 07.03.2011 21:45
quelle

Tags und Links