2009-06-04 3 views
0

Ich habe eine DataGridView, die von einem DataTableAdatper aufgefüllt wird, wie in this tutorial.Wie wird nur eine Zeile in einem DataGridView aktualisiert?

Ich denke, da es eine ODBC-MySQL-Verbindung ist, erzeugt es nicht DBDirectMethods für mich.

Meine Frage ist, wie aktualisiere ich eine bestimmte Zeile in der Datenbank, nachdem der Benutzer es im Raster bearbeitet hat? Muss ich einen DeleteCommand in meinem Adapter angeben? Wann würde es heißen?

Antwort

1

Sie brauchen in der Regel nicht die DeleteCommand, Update zu erstellen und Insert selbst: ein Command kann es für Sie tun:

private void UpdateCurrentRow() 
{ 
    DataRowView drv = dataGridView1.CurrentRow.DataBoundItem as DataRowView; 
    DataRow[] rowsToUpdate = new DataRow[] { drv.Row }; 

    OdbcDataAdapter adapter = new OdbcDataAdapter("SELECT * FROM FOO", connection); 
    OdbcCommandBuilder builder = new OdbcCommandBuilder(adapter); 
    adapter.Update(rowsToUpdate); 
} 
+0

Aber wie sage ich es, welche Zeilen zu aktualisieren? Kann die Gitterkontrolle das nicht tun? (d. h. entscheiden, welche Zeilen geändert wurden, und eine Aktualisierung für diese aufrufen?) –

+0

Das DataGridView aktualisiert seine DataSource (d. h. das DataSet in Ihrem Fall), aber es liegt in Ihrer Verantwortung, die Datenbank entsprechend den Änderungen im DataSet zu aktualisieren. Sie können auch adapter.Update für die gesamte DataTable aufrufen, nur geänderte Zeilen werden in der Datenbank aktualisiert. –