Frage zum Speichern von Änderungen im DataGridView

26/08/2008 - 13:47 von Dirk Michaelsen | Report spam
Hallo zusammen,

ich habe unter Visual Studio 2005 eine kleine Testanwendung
geschrieben, um die Datenerfassung im DataGridView zu testen. Das war
mit den Assistenten ja auch alles ganz einfach. Beim Erstellen der
Datenquelle und des DataGridView wird ja alles Mögliche generiert, so
dass die Anzeige von Daten sofort funktioniert hat.

Wenn ich Daten im DataGridView erfasst bzw. geàndert habe, werden
diese leider nicht automatische in der Datenbank persistiert. OK, nach
fast zwei Tagen Recherche habe ich nun auch den Code zum Speichern der
Änderungen gefunden und mir auf einen Save-Button gelegt. Funktioniert
auch soweit.

Was offen bleibt sind zwei Fragen:

1. Wenn VS tonnenweise Code zum Holen, Anzeigen und sogar Speichern
der Daten generiert und das DataGridView das Ändern bzw. Hinzufügen
der Daten ermöglicht, warum wird dann nicht auch noch das letzte
Stückchen Code generiert, das die Änderungen aus dem DataGridView in
die Datenbank zurückschreibt?

2. Das Speichern der Änderungen über einen Save-Button finde ich sehr
unschön. Bei welchem Event(s) muss ich mich denn einklinken, damit die
Änderungen sofort nach der Erfassung im DataGridView persistiert
werden?

Viele Grüße
Dirk
 

Lesen sie die antworten

#1 Peter Götz
26/08/2008 - 18:42 | Warnen spam
Hallo Dirk,

ich habe unter Visual Studio 2005 eine kleine
Testanwendung geschrieben, um die Datenerfassung
im DataGridView zu testen. Das war mit den
Assistenten ja auch alles ganz einfach. Beim
Erstellen der Datenquelle und des DataGridView
wird ja alles Mögliche generiert,



... und hast Du Dir auch mal angesehen, was dabei
alles an Code generiert worden ist und noch wichtiger,
hast Du auch verstanden, was dieser Code macht?

so dass die Anzeige von Daten sofort funktioniert hat.



Die Anzeige schon, aber ..

Wenn ich Daten im DataGridView erfasst bzw. geàndert
habe, werden diese leider nicht automatische in der
Datenbank persistiert.



Ich "speichere" Daten in der Datenbank.

Warum sollten Daten, welche Du geàndert hast autom.
gespeichert werden?
Der Designer/Assistent kann ja nicht wissen, welche
Speicherstrategie Du in Deinem Programm anwenden
möchtest.
Willst Du jede geànderte/neue Zeile sofort in der DB
speichern, wenn Du zu einem anderen Datensatz
wechselst, oder willst Du erst mal mehrere DS àndern,
hinzufügen oder löschen und erst dann alle bis dahin
vorgenommenen Änderungen speichern?
Diese Entscheidung musst Du schon selber treffen,
kein Automatismus kann Dir diese Entscheidung
abnehmen.

Wenn Du jede Änderung eines Datensatzes sofort
speichern willst, kannst Du in

DataGridView_RowValidating

reagieren und im nachfolgenden

DataGridView_RowValidated

für geànderte oder neue Datensàtze das Speichern
auslösen. Beim Löschen eines Datensatzes kannst
Du auf das Ereignis

DataGridView_UserDeletingRow

reagieren, um das Löschen noch abzubrechen und
auf das Ereignis

DataGridView_UserDeletedRow

reagieren, um den Datensatz aus der DB zu löschen.


Möchtest Du aber erst mehrere Datensàtze àndern,
hinzufügen und/oder löschen, dann kannst Du das
Speichern (DataAdapter.Update) via Lösch-Button
ausführen oder im Ereignis

DataGridView_Validating

reagieren, welches beim Focus-Verlust des DGV oder
spàtestens beim Schliessen der Form ausgelöst wird.


OK, nach fast zwei Tagen Recherche habe ich nun
auch den Code zum Speichern der Änderungen
gefunden



Wo hast Du welchen Code gefunden?

und mir auf einen Save-Button gelegt. Funktioniert
auch soweit.

Was offen bleibt sind zwei Fragen:

1. Wenn VS tonnenweise Code zum Holen, Anzeigen
und sogar Speichern der Daten generiert und das
DataGridView das Ändern bzw. Hinzufügen der
Daten ermöglicht, warum wird dann nicht auch noch
das letzte Stückchen Code generiert, das die
Änderungen aus dem DataGridView in die
Datenbank zurückschreibt?



s.oben: weil VS keine hellseherischen Fàhigkeiten hat
und deshalb nicht wissen kann, welche Speicherstrategie
Du anwenden willst.

2. Das Speichern der Änderungen über einen
Save-Button finde ich sehr unschön.



s.oben:
Kommt eben darauf an, welche Strategie zum Speichern
der Datensàtze verwendet werden soll.

Bei welchem Event(s) muss ich mich denn einklinken,
damit die Änderungen sofort nach der Erfassung im
DataGridView persistiert werden?



Bei den Wort "persistiert" bekomme ich eine Gànsehaut.
Wir sind doch hier in einer deutschsprachigen NG, warum
nicht einfach "speichern"?

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen