2008-10-28 4 views
5

Ich habe ein DataGridView mit seiner Datenquelle auf eine generische Liste von benutzerdefinierten Objekten festgelegt. Wenn der Benutzer Werte ändert (in diesem Fall aktiviert/deaktiviert er ein Kontrollkästchen), ändert sich das zugrunde liegende boolesche Feld im Objekt.Wie werden an einer gebundenen DataGridView vorgenommene Änderungen rückgängig gemacht?

Sollte ich eine "Kopie" der Liste für die Bindung erstellen, dann manuell aktualisieren, wenn der Benutzer festlegt, (wenn ja, wie erstellen Sie diese Kopie), oder gibt es eine einfache Möglichkeit, Änderungen an der Datenquelle Rollback .

(Ich bin mit C#)

Antwort

1

Technisch, wenn Sie es doch sagen zu, es ist nicht Ihre tatsächliche Datenquelle zu aktualisieren, nur die Liste, die Sie an das Netz gebunden haben. Es steht Ihnen weiterhin frei, diese Liste zu entfernen und Ihre Quelle erneut abzufragen, um sie im vorherigen Zustand wiederherzustellen.

Sie könnten einfach eine Festschreibungsoption für die Benutzer hinzufügen, um alle vorgenommenen Änderungen an die tatsächliche Datenquelle zu übergeben.

Es wäre viel einfacher und wahrscheinlich viel weniger intensiv, damit umzugehen. Dann können Sie einfach eine "Änderungen abbrechen" oder eine andere Option wählen, die die Liste von der Quelle aktualisiert und erneut bindet, ohne ein Update durchzuführen.

Hoffe, das hilft!

Prost!

+0

Ich übergab meine Liste an das Formular, das verbindlich war. (Es ist aus einer XML-Datei aufgebaut). Ich denke du hast meinen Fehler hervorgehoben. Ich muss eine neue Liste erstellen <> Sammlung für die Bindung, (nicht die "Live" verwenden, und Änderungen nur dann, wenn der Benutzer will (klickt auf OK) Vielen Dank. –

+0

Kopieren Sie das Objekt, das Sie senden, um das Formular zu bearbeiten. Implementieren Kopieren Sie den Konstruktor, um eine Kopie des ursprünglichen Objekts zu erstellen, und weisen Sie sie dann dem Anwendungsfall zu oder verwerfen Sie ihn wie folgt: http://stackoverflow.com/a/6569799/384554 – PUG