2012-10-26 5 views
5

Ich arbeite an einer "Bearbeitungs" -Seite für ein Objekt. Auf dieser Seite möchte ich etwas wie eine DetailsView haben, die das Bearbeiten von Eigenschaften des Objekts sowie eine GridView mit Kindern erlaubt und das einfache Hinzufügen/Bearbeiten/Löschen der Kinder erlaubt. Die Aktualisierungen für die übergeordneten oder untergeordneten Objekte sollten erst dann in der Datenbank gespeichert werden, wenn auf die Schaltfläche Speichern geklickt wird. Ich bin asp.net Web Forms und Entity FrameworkBeispiel eines Webformulars benötigen, das ein Elternobjekt mit Kindern bearbeitet

Als ein einfaches Beispiel, stellen Sie sich ein Projekt-Objekt mit einer Sammlung von Ressourcen. Ich erstelle eine Seite, die es einem Benutzer ermöglicht, Projekteigenschaften wie ProjectName in einer DetailsView zu ändern sowie eine Ressource in einer Gridview unten hinzuzufügen/zu bearbeiten/zu löschen. Ein Speicherknopf am unteren Rand speichert alles.

Ich habe Beispiele in MVC gefunden, habe aber Probleme, ein Webformular Beispiel zu finden.

+0

Ich habe dieses Schema nicht gemacht, aber eine Idee ist es, die Kinder geänderten Daten auf Viewstate zu speichern, bis die Stammdaten zum Speichern gehen, dann speichern Sie alle zusammen. – Aristos

Antwort

0

Ich bin nicht in der Lage, Ihre Anwendung für Sie zu programmieren, aber ich habe dies mit einer von zwei Varianten des gleichen Musters erreicht.

Erstellen Sie ein Datensatzobjekt für Ihre untergeordneten Objekte, das serialisierbar ist und das in einer ViewState-basierten Liste verwaltet. Wenn die Daten sehr groß sind, sollten Sie in Betracht ziehen, sie in der Sitzung zu belassen und einen eindeutigen Schlüssel für Ihr Session-Objekt zu verwenden (z. B. eine GUID bei Page_Load) und den Schlüssel in ViewState speichern.

Wenn Sie die Eltern/Kinder bearbeitet haben, müssen Sie die geänderten Objekte in ViewState/Session auf die auf der Festplatte gespeicherten Objekte auflösen.

+0

Ich konnte dies mit ViewState arbeiten, wie Sie vorgeschlagen, meine Entity-Objekte zu speichern. Die größte Herausforderung war, dass ich versuchte, eine EntityDataSource für die Gridview und DetailsView zu verwenden. Das hat nicht funktioniert und ich habe das direkte Entity-Objekt als Datenquelle verwendet und die Wertzuweisungen in den Updating-Ereignissen codiert. – OffTheRadar

+0

Richtig, keine der Standarddatenquellen funktioniert, wenn die Verbindung zur Datenbank getrennt wird. Beobachten Sie die Größe Ihres Viewstatus. Wenn es zu einem Problem wird, sollten Sie in Betracht ziehen, Ihren temporären Datenspeicher mit einem Schlüssel auf der Basis von VeWstate in die Sitzung zu verschieben. – andleer

Verwandte Themen