Grundsätzlich habe ich eine MySQL-DB bin ich die Daten aus einer Spalte einer Tabelle in eine ListBox binden. Ich möchte Benutzern erlauben hinzufügen/bearbeiten/entfernen von Elementen und zu seinLöschen von Zeilen aus Datentabelle ordnungsgemäß in. NET
Änderungen speichern können/ablehnen zum löschen, ich möchte der Benutzer in der Lage sein das ausgewählte Element in der List-Box zu löschen .. hier ist was ich
bisher ausprobiert habe (1) dt.Rows(lst.SelectedIndex).Delete()
Dies löscht die Zeile jedoch erst aus der DataTable, wenn sie mit der Methode DataAdapter.Update
aktualisiert wird, sodass der nächste Index in der ListBox auf die gelöschte verweist Zeile in der DataTable.
(2): dt.Rows.RemoveAt(lst.SelectedIndex)
Dies funktioniert gut, aber wenn die Datentabelle zu aktualisieren (nachdem der Benutzer save
klickt), werden die gelöschten Zeilen nicht einmal gelöscht.
(3) Versucht AcceptChanges
Aufruf: oben
dt.Rows(lst.SelectedIndex).Delete()
dt.AcceptChanges()
Und ich bekomme das gleiche Ergebnis wie die zweite.
Hier ist, wie ich endlich die Datentabelle aktualisieren:
Dim cmdBldr As New MySqlCommandBuilder(da)
da.Update(dt)
So ist es eine Möglichkeit, Benutzer zu ermöglichen, auf die Datatable beliebige Anzahl von Zeilen hinzufügen/löschen Sie vor der Aktualisierung?
Wenn Sie beide ('.Delete()' und '.RemoveAt()') aufrufen, was passiert? – Aimnox
Ich habe eine 'BindingSource' verwendet - dank Jmcilhinneys Antwort -, aber auf jeden Fall ist das, was du vorschlägst, keine gute Idee, denn zuerst werden zwei Einträge aus der Listbox gelöscht. –