Laden...

Row lässt sich nicht löschen - [FW 2.0, Dataset]

Erstellt von userid789 vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.169 Views
U
userid789 Themenstarter:in
71 Beiträge seit 2004
vor 17 Jahren
Row lässt sich nicht löschen - [FW 2.0, Dataset]

Guten Abend,

Ich schlage mich seit geraumer Zeit mit dem Dataset rum und finde es absolut schlimm.

Mein neuestes Problem ist: 😁

Ich habe verschiedene Forms mit DataGridViews drauf und fülle diese dann mit TableAdapter, BindingSource, Dataset.

Für die Erstellung und Bearbeitung benutze ich immer folgenden Weg:

-(Neue Row erzeugen -> DataSet.Table.NewRow())
-Row-Werte ändern... -> row.Name = "<Name>"
-(Row hinzufügen zu Table -> DataSet.Table.AddRow(row))
-In DB schreiben -> TableAdapter.Update

Das funktioniert auch.

Nur das löschen scheint nicht zu stimmen:
Entweder Row.Delete() oder RemoveRow(row) benutze ich.
Danach auch wieder ein Update (mit der Table)...

Die Row wird zwar aus dem DataGridView gelöscht aber in der DB bleibt sie!

Hat jmd schon eine Idee?
Bin auch bereit Code zu posten.

Danke

563 Beiträge seit 2004
vor 17 Jahren

Hallo stephanruhland

finde es absolut schlimm.

Was findest du so schlimm? Das DataSet ist eine sehr mächtige Klasse, harziger Einstieg, aber wenn man sich eingearbteitet hat, kann man dabei super Daten verarbeiten, anzeigen usw.

Der SqlDataAdapter.Update() Befehler guckt sich den RowState von den Rows des DataSets an! D.h. der RowState eines zu löschenden Datensatzes MUSS Deleted sein!

Mit DataTable.Rows.Remove(dataRow) löschst du den Datensatz raus, dann ist dieser gar nicht mehr vorhanden --> der DataAdapter sieht keinen Datensatz, welcher als gelöscht markiert wurde!

DataRow.Delete() ist der richtige Weg.
MSDN:

If the RowState of the row is Added, the row is removed from the table.

The RowState becomes Deleted after you use the Delete method. It remains Deleted until you call AcceptChanges.

A deleted row can be undeleted by invoking RejectChanges.

Rufst du AcceptChanges() vor dem Update() auf?

Wenn es bei dir nicht klappt, musst du mal deinen DeleteCommand beim SqlDataAdapter angucken, dort müsste der Hund begraben sein.

Wie hast du die SELECT-, INSERT-, UPDATE- und DELETE-Commands zugewiesen? Ich hoffe nicht mit dem SqlCommandBuilder =)

Gruss,
.unreal