Hallo Freunde,
ich glaube, ich werde mit diesen typisierten Datasets niemals zurechtkommen
Ich habe mir eine Datenbankstruktur zusammen mit dem Kunden erstellt und daraus dann ein typisiertes Dataset erstellt. So weit, so gut. Mein DatagridView zeigt auch sauber alle (zunächst manuell) erstellen Testdaten an. Dann habe ich eine Detailview dazugebaut mit lauter kleinen Controls darin für die restlichen Daten. Auch hier funktioniert die Anzeige wunderbar.
Zusätzlich gibt es einen "Änderungen speichern"-Button - an dem gibt es keinen Weg vorbei, der Kunde braucht so einen Knopf. Fragt nicht warum, isso
Nehme ich nun also Änderungen vor in den Detail-Controls (z.B. den Namen ändern), dann sehe ich wie sich im DatagridView der Name ändert. Ein Klick auf den "Änderungen speichern"-Button löst folgenden Code aus (ds = das Dataset, KundenTA = TableAdapter):
Damit sollten meine Änderungen in der Datenbank landen und auch im Dataset sind alle Datensätze "sauber". Wie gesagt, im DatagridView ist alles prima. Beende ich das Programm und starte es neu sind alle Änderungen verschwunden
Spaßenshalber habe ich im FormClosing-Event noch ein bissel Sicherheitscode eingebaut, falls der Kunde das Programm beendet, aber noch Änderungen zu speichern sind:
Unser Kunde bekommt dann also ne Messagebox, wo er mit JA alles abspeichern kann, mit NEIN die Änderungen verwirft und mit ABBRECHEN das Beenden abbricht. So zumindest die Theorie, denn wenn ich (wie zuvor) den Namen ändere, sehe ich das im DatagridView. Mein FormClosing-Handler allerdings zeigt mir keine Meldung an, wenn ich das Programm beenden will. Die Eingabefelder sind allesamt an die kundenBindingSource geklemmt, im Falle des Namens also an kundenBindungSource - Name.
Ich möchte echt gern den Kriegsfuß, mit dem ich auf diesen Datasets stehe, loswerden - was mache ich denn nun wieder falsch ?
ich glaube, ich werde mit diesen typisierten Datasets niemals zurechtkommen
Ich habe mir eine Datenbankstruktur zusammen mit dem Kunden erstellt und daraus dann ein typisiertes Dataset erstellt. So weit, so gut. Mein DatagridView zeigt auch sauber alle (zunächst manuell) erstellen Testdaten an. Dann habe ich eine Detailview dazugebaut mit lauter kleinen Controls darin für die restlichen Daten. Auch hier funktioniert die Anzeige wunderbar.
Zusätzlich gibt es einen "Änderungen speichern"-Button - an dem gibt es keinen Weg vorbei, der Kunde braucht so einen Knopf. Fragt nicht warum, isso
Nehme ich nun also Änderungen vor in den Detail-Controls (z.B. den Namen ändern), dann sehe ich wie sich im DatagridView der Name ändert. Ein Klick auf den "Änderungen speichern"-Button löst folgenden Code aus (ds = das Dataset, KundenTA = TableAdapter):
Damit sollten meine Änderungen in der Datenbank landen und auch im Dataset sind alle Datensätze "sauber". Wie gesagt, im DatagridView ist alles prima. Beende ich das Programm und starte es neu sind alle Änderungen verschwunden
Spaßenshalber habe ich im FormClosing-Event noch ein bissel Sicherheitscode eingebaut, falls der Kunde das Programm beendet, aber noch Änderungen zu speichern sind:
C#-Quellcode
- private void Form1_FormClosing(object sender, FormClosingEventArgs e)
- {
- if (ds.HasChanges())
- {
- DialogResult dr = MessageBox.Show("Änderungen speichern ?", "Änderungen nicht gespeichert", MessageBoxButtons.YesNoCancel);
- switch(dr)
- {
- case DialogResult.No:
- ds.Kunden.RejectChanges();
- break;
- case DialogResult.Yes:
- KundenTA.Update(ds.Kunden);
- ds.Kunden.AcceptChanges();
- break;
- case DialogResult.Cancel:
- e.Cancel = true;
- break;
- }
- }
- }
Unser Kunde bekommt dann also ne Messagebox, wo er mit JA alles abspeichern kann, mit NEIN die Änderungen verwirft und mit ABBRECHEN das Beenden abbricht. So zumindest die Theorie, denn wenn ich (wie zuvor) den Namen ändere, sehe ich das im DatagridView. Mein FormClosing-Handler allerdings zeigt mir keine Meldung an, wenn ich das Programm beenden will. Die Eingabefelder sind allesamt an die kundenBindingSource geklemmt, im Falle des Namens also an kundenBindungSource - Name.
Ich möchte echt gern den Kriegsfuß, mit dem ich auf diesen Datasets stehe, loswerden - was mache ich denn nun wieder falsch ?