Hallo zusammen.
Wenn Ihr eine Klasseninstanz habt, die der Benutzer bearbeiten soll/darf, sollte es ja auch eine Möglichkeit geben, den Vorgang abzubrechen, auch wenn Teile der Daten schon innerhalb der Bearbeitungscontrols geändert wurden.
Beispiel: Telefonbuchkontakte
Man hat 20 Kontakte in einer Liste, wählt den 5. aus, bekommt die Details des Kontakts in einem Extradialog zu Gesicht und fängt an, diese zu bearbeiten. Dann stellt man fest, das man das doch nicht will und klickt auf [X] oder auf einen Abbrechen-Button. Wie stellt Ihr sicher, dass jetzt die teilweise vorgenommenen Änderungen nicht übernommen?
Wenn man kein DataBinding verwendet, ist es wohl einfach, da man ja die Daten manuell in die Controls reinschaufelt und sie dann dort wieder manuell abholt - oder eben auch nicht. Aber mit DataBinding wird es komplizierter, da ja die Instanzdaten quasi adhoc geändert werden.
Welche Möglichkeiten verwendet Ihr? Mir würde einfallen:
WinForms
Habe bei meinen Programmen zwar noch am Programmende die Möglichkeit, alle Änderungen der aktuellen Sitzung zu verwerfen, aber das ist der Holzhammer, der für ganz krasses Datenrummurksen vorgesehen ist.
Wenn Ihr eine Klasseninstanz habt, die der Benutzer bearbeiten soll/darf, sollte es ja auch eine Möglichkeit geben, den Vorgang abzubrechen, auch wenn Teile der Daten schon innerhalb der Bearbeitungscontrols geändert wurden.
Beispiel: Telefonbuchkontakte
Man hat 20 Kontakte in einer Liste, wählt den 5. aus, bekommt die Details des Kontakts in einem Extradialog zu Gesicht und fängt an, diese zu bearbeiten. Dann stellt man fest, das man das doch nicht will und klickt auf [X] oder auf einen Abbrechen-Button. Wie stellt Ihr sicher, dass jetzt die teilweise vorgenommenen Änderungen nicht übernommen?
Wenn man kein DataBinding verwendet, ist es wohl einfach, da man ja die Daten manuell in die Controls reinschaufelt und sie dann dort wieder manuell abholt - oder eben auch nicht. Aber mit DataBinding wird es komplizierter, da ja die Instanzdaten quasi adhoc geändert werden.
Welche Möglichkeiten verwendet Ihr? Mir würde einfallen:
WinForms
- DataBinding der Controls so einstellen, dass die Daten nicht sofort aktualisiert werden. Wenn auf Speichern geklickt wird, ändert man das DataBinding so, dass die Werte übernommen werden (
DataSourceUpdateMode.OnValidation
) und ruftBindingSource.EndEdit
auf, um die Werte ins Model zu übernehmen. BindingSource.CancelEdit
aufrufen - klappt nur, wenn die zugrundeliegenden Daten dies unterstützen, was bei nem tDS gegeben ist, sonst von Haus aus nicht.
- Wiederherstellung eines DB-Eintrags
- Memento Pattern - alle Daten in einem Duplikat speichern und entweder Original oder Duplikat bearbeiten, bei Speichern oder Abbruch das ein oder andere verwerfen
Habe bei meinen Programmen zwar noch am Programmende die Möglichkeit, alle Änderungen der aktuellen Sitzung zu verwerfen, aber das ist der Holzhammer, der für ganz krasses Datenrummurksen vorgesehen ist.
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.
Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.