Speichert ein Array von Objekten in ASP.NET Ansichtszustand die beste Lösung für dieses?

stimmen
2

Ich frage mich, ob die Daten in Ansichtszustand speichern für dieses gegebene Problem ist eine gute Idee. Er ist ein vereinfachtes Beispiel, was ich versuche zu erreichen, zunächst wir ein Repeater-Steuerelement haben:

<asp:Repeater id=Repeater1 runat=server>
<ItemTemplate>
<asp:TextBox id=Name runat=server />
<asp:TextBox id=Age runat=server />
</ItemTemplate>
</asp:Repeater>
<asp:TextBox id=NewPersonName runat=server />
<asp:TextBox id=NewPersonAge runat=server />
<asp:Buttin id=Button1 runat=server Text=Add OnClickButton1_Click/>

Um die Dinge einfach zu halten Ich werde den Code Datenbindung verzichten, da dies funktioniert es in der aktuellen Liste der Personen lädt und Altersgruppen und bindet perfekt.

Das Problem ist mit der unteren 3 steuert, was ich will, ist für die Benutzer in der Lage sein, einen neuen Eintrag eingeben, klicken Sie auf die Schaltfläche Hinzufügen, und dies würde dann an den Repeater hinzugefügt werden, aber nicht in die Datenbank beibehalten.

Der Benutzer sollte mehrere Namen zur Liste hinzuzufügen können, und dann eine Schaltfläche Speichern klicken, um alle neuen Namen eher in einem einzigen Klick zu begehen als für jeden Eintrag zu begehen.

Veröffentlicht am 09/12/2008 um 19:49
quelle vom benutzer
In anderen Sprachen...                            


4 antworten

stimmen
1

Ich würde dies in einem von zwei Arten behandeln. Die erste würde JS-Arrays und client an den Repeater / Betrachtungsmechanismus Zugabe tun.

Die andere Möglichkeit wäre, einen Tisch haben in meiner DB, wo ich diese nicht gebundene Ergänzungen zu speichern und sie dann einfach aus abfragen zurück.

und in Wahrheit würde ich wahrscheinlich eine Kombination der beiden tun. Verwenden Sie AJAX die Daten an die nicht gebundenen Listentabelle zu senden asynchron, während ich die neuen Knoten für meine Anzeige baue.

Auf der SAVE / COMMIT-Taste, würde ich den Befehl an den Server senden Commit asynchron, die den Benutzer Elemente aus der nicht gebundenen tableto der engagierten Tisch bewegt.

Beantwortet am 09/12/2008 um 20:10
quelle vom benutzer

stimmen
1

Ich würde Sie Javascript verwenden, und speichern Sie es in Objekt-Arrays. Dann würde die Client-Seite, die JavaScript-Arrays verweisen die Benutzeroberfläche für den Aufbau.

Vielleicht haben Sie einen Blick auf einige der JavaScript-Frameworks wie Yahoo yui nehmen, script.aculo.us, jQuery, usw.

Beantwortet am 09/12/2008 um 20:01
quelle vom benutzer

stimmen
1

Ich hätte gerne ein Datatable-Objekt verwenden und speichern sie in der Sitzung des Benutzers. Auf diese Weise haben Sie eine schnelle Möglichkeit, Daten der auf jedes Add / ändern / löschen und Sie können einfach klar, dass es aus der Sitzung verbindlich, wenn die Verarbeitung durchgeführt wird. Darüber hinaus könnte man leicht die Benutzerliste Zugriff auf einer anderen Seite, wenn es für notwendig erachtet wurde.

EDIT: Eine andere Einschränkung ist, dass, wenn nötig, Sie leicht einen Dataview auf absinken können dafür ist man ein paar schnelle Sortierung / Filterung der Benutzerliste tun müssen.

Beantwortet am 09/12/2008 um 19:59
quelle vom benutzer

stimmen
1

Persistent speichern Sie die gesamte Liste aus der Datenbank in dem Ansichtszustand oder nur die nicht gebundenen Ergänzungen?

Wenn es nur die Ergänzungen ist, dann ist dies eine feine Verwendung von Ansichtszustand.

Wenn die Liste von der DB nicht sehr groß oder flüchtig ist, dann denke ich, dass in Ordnung sein würde, auch.

Beantwortet am 09/12/2008 um 19:58
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more