Frage

Ich habe ein einfaches Web-Formular, das ein mehr Felder und ein gridview auf sich. Ich habe auch eine Taste speichern und löschen.

Ich möchte eine Art und Weise rückgängig zu machen, was mit den Daten über die Form geschehen, wenn der Benutzer drückt abzubrechen. Das ist einfach genug, um mit den Feldern aber da Änderungen an die gridview in Echtzeit für die Datenbank passieren Ich weiß nicht, wie Funktionalität erhalten rückgängig gemacht werden.

Ich habe gedacht, um die Änderungen zu speichern, in Ansichtszustand zu Gridview, aber ich würde lieber nicht wegen des zusätzlichen Platzbedarfs.

Ich habe auch von einer temporären Tabelle gedacht, dass die Änderungen sie dann gespeichert würde ein Rollback nach Bedarf.

Hat jemand eine Idee, wie zu erhalten, um Funktionalität aus dem Formular rückgängig machen?

War es hilfreich?

Lösung

alle Daten in einer Session-Objekt halten und dass in die Datenbank schreiben, wenn Sie bereit sind. Wenn Sie abstrakte Ihre Datenschicht können Sie die Object verwenden, die mit den Session-Objekten interagiert.

Ich bin derzeit mit dieser Methode an einem Kassensystem für eine E-Commerce-Website. Ich speichere die Daten in benutzerdefinierten Objekten, die das Datenbankschema zu imitieren.

Andere Tipps

Die einfachste Lösung ist, um die Änderungen in der Gridview in der Datenbank fest, bis der Benutzer die Schaltfläche „Speichern“ klickt.

Wenn Sie sich entscheiden Ansichtszustand oder so zu verwenden, um Änderungen zu erfassen, die Sie später rückgängig gemacht werden, vergessen Sie nicht die gleiche Art von Vorkehrungen zu treffen, re: Update Kollisionen, die Sie würde, wenn die anfänglichen Änderungen vornehmen.

Hmmm ... laden die Daten Objekt (e) in die Sitzung und binden Ihre Kontrollen von den (MyObject)Session["MyObject"] Objekte. Ich glaube, Sie können in ein Object Haken um die Sitzung zu verwenden ... Sie können dann die Update-Ereignisse überschreiben, damit die Änderungen an der Sitzung geschrieben werden.

Wenn der Benutzer klickt speichern, nehmen Sie die Sitzungsobjekte und speichern Sie sie: MyObject obj = (MyObject)Session["MyObject"]; MyObject.Save()

Es würde Sie nicht mehrere Ebenen der Undo geben ... obwohl ich glaube, dass Sie mehrere Sitzungsobjekte speichern können, wenn Sie wirklich benötigt werden.

Eine Möglichkeit, Änderungen wäre in einer anderen Tabelle zu einer Tabelle speichern zusammen mit einem Zeitstempel und eine Kennung für diese Anwendungsinstanz. Wenn Sie seit einer bestimmten Zeit zu Änderungen rückgängig machen wollen, überqueren Sie nur die Liste nach hinten bis zu diesem Zeitpunkt für diese Kennung.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top