Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von MorphieX
Thema: DataBinding: Suche Event u.ä., wenn die Bearbeitung eines Datensatzes abgeschlossen ist
Am im Forum: GUI: Windows-Forms

Erstmal vielen Dank für deine Antworten.

Aber ich glaube ich hab das Problem noch nicht ausreichend beschrieben.
Ich stelle mir das so vor:
Ich habe ein TabControl mit mindestens zwei Pages.
Auf der 1. Page (Übersicht) befindet sich ein Grid mit mehreren Kontakten
Auf der 2. Page (Details) befinden sich diverse Eingabecontrols, die die entsprechenden Felder eines Kontaktes anzeigen, also z.B. Kundennr, Name, Straße, PLZ,...

Wenn ich jetzt im Grid einen Kontakt auswähle, werden die Eingabecontrols auf der 2. Page automatisch ausgefüllt (über Bindings)

Der Benutzer kann nun die Eingaben (z.B. die Straße) ändern und auf Speichern klicken.
Alternativ kann der Benutzer wieder zu Page 1 wechseln und einen anderen Kontakt aufrufen.
Hier soll das Programm jetzt merken "Aha, der Kontakt wurde aber geändert!" und soll einen Dialog anzeigen "Möchten Sie die Änderungen speichern? Ja, Nein, Abbrechen".

Bei Ja sollen die Änderungen gespeichert werden, so als wenn man direkt auf "Speichern" geklickt hätte. (SaveChanges wahrscheinlich)
Bei Nein sollen die Änderungen rückgängig gemacht werden (CancelEdit wahrscheinlich)
Und bei Abbrechen soll der Wechsel des Kontaktes unterdrückt werden. Es soll also wieder / immernoch der angezeigte Kontakt ausgewählt sein (Current)

Und genau beim Wechsel des Kontaktes habe ich das Problem. Ich finde keine Möglichkeit, VOR dem Wechsel abzufragen, ob die Änderungen gespeichert werden sollen.

Thema: DataBinding: Suche Event u.ä., wenn die Bearbeitung eines Datensatzes abgeschlossen ist
Am im Forum: GUI: Windows-Forms

Zitat
also ist nach dem Datensatzwechsel noch überhaupt nichts in der DB passiert und du kannst dann genau das machen was Du machen willst, nämlich entweder auf Nachfrage die Änderungen speichern oder aber auch wieder im Speicher rückgängig machen.
Und wie genau reagiere ich dann darauf? Es muss doch irgendeine möglichkeit geben, in den mechanismus gezielt einzugreifen. Oder wie macht ihr sowas?
Zitat
Du solltest dich lösen von den Ideen der anderen Sprachen und deiner bisherigen Vorgehensweisen.
Das habe ich vor, aber irgendwie glaube ich, noch etwas elementares noch nicht verstanden zu haben. Habe aber schon sehr viel gelesen, nur kommt mir da im Moment keine Idee

Thema: DataBinding: Suche Event u.ä., wenn die Bearbeitung eines Datensatzes abgeschlossen ist
Am im Forum: GUI: Windows-Forms

Nee, da ist der Vorgang ja schon abgeschlossen.
ich will ja vorher fragen, ob die Änderungen gespeichert werden sollen, bzw. den Vorgang ggf. abbrechen oder sowas...

Thema: DataBinding: Suche Event u.ä., wenn die Bearbeitung eines Datensatzes abgeschlossen ist
Am im Forum: GUI: Windows-Forms

Hi,

vorweg: ich bin ganz neu hier und versuche mich gerade an C#.
Ich komme aus der Delphi und VB6 Ecke und möchte mich jetzt selbst weiterbilden.

Kleinere Sachen kann ich schon, doch jetzt möchte ich mich mit Datenbanken / Databinding beschäftigen.

Ich habe also die Trial-Version vom Visual Studio 2010, eine Firebird-Datenbank und den Firebird ADO.NET Data Provider.
Ich habe meine Datenbank jetzt mittels Entity Framework gemappt und kann auch wunderbar auf meine Daten zugreifen / Filtern usw. Das klappt also.

Dann habe ich eine "neue Datenquelle" aus einem "Objekt" hinzugefügt, auch das klappt. Wenn ich jetzt z.B. die Datenquelle auf eine WinForm ziehe, wird ein Grid mit den ganzen Spalteninformationen erstellt. Soweit ok.

Wenn ich der BindingSource dann eine Liste zur Laufzeit zuweise, stehen auch tatsächlich die entsprechenden Daten im Grid.

Außer dem Grid ziehe ich dann noch eine beliebige Eigenschaft der Datenquelle auf die Form, z.B. das Feld "KundenNr" als TextBox.
In dieser TextBox wird mir jetzt immer die KundenNr des aktuell im Grid selektierten "Datensatzes" angezeigt.

Das sind also meine Basics.

Jetzt das Problem: ich möchte auf eine Änderung der Datenquelle reagieren, genauergesagt möchte ich vor einem "Datensatz"-wechsel überprüfen, ob ggf. der Text im Feld KundenNr geändert wurde.
Wenn ja, soll der Anwender gefragt werden, ob der Datensatz vorher gespeichert werden soll.

Mein Problem besteht also darin, ein Event zu finden, welches mir signalisiert, dass ein Datensatzwechsel ansteht. (am Besten noch mit einer Möglichkeit, den Vorgang abzubrechen)

Leider bietet mir die BindingSource keinerlei Events an, auf die ich reagieren könnte. Aus anderen Programmiersprachen kenne ich es, dass mir die Datenquelle diverse Events bereitstellt, z.B. "AfterUpdate", "BeforeInsert", "BeforeRowColChange",.....

Wie macht man soetwas also in C#?
Ich könnte sowas natürlich ins Grid packen (ich glaube das bietet solche Events), aber das muss doch irgendwo zentral ablaufen können, oder nicht?
Was, wenn ich gar nicht mit einem Grid arbeiten möchte?

Wie macht ihr sowas?
Habe mir schon diverse Tutorials und Videos angesehen, aber entweder geht es um WPF (da verstehe ich bislang noch gar nichts) oder es wird gar nicht erwähnt, wie man auf soetwas reagiert.

Ich hoffe ich konnte mich zumindest ein bisschen verständlich ausdrücken *g* und freue mich auf eure Antworten. :-)
Danke