C #, как скопировать текущую строку datagridview в один datarow? - PullRequest
0 голосов
/ 11 октября 2018
DataRow dr;
dr = ((dgv.DataSource) as DataTable).Rows[dgv.CurrentRow.Index];

dgv - это DataGridView, предопределенный для winform.dr всегда один.

Вышеуказанный код был найден.Но это не работает правильно.Потому что CurrentRow.Index не привязан к DataTable's Index.Я думаю, что копировать DataGridViewRow в DataRow является самым простым способом.Разве это невозможно?

Причина, по которой это делается, заключается в обновлении / удалении из базы данных при изменении dgv.Любое другое лучшее решение для удаленной БД CRUD из локального dgv должно быть отличным.

Заранее спасибо.

1 Ответ

0 голосов
/ 11 октября 2018

Вы можете связать свое представление таблицы данных непосредственно с таблицей базы данных, не проходя мимо таблицы данных, определив столбец идентификатора в таблице базы данных (вы можете отображать или не отображать столбец идентификатора в представлении данных), как показано ниже

Код позади:

SqlCommand update = new SqlCommand();
update.connection = conn;    // conn is your SqlConnection to the server
update.parameters.add("@Id",[sqldbtype.int]).value=dgv.Rows[dgv.CurrentRow.Index].Cell[0]; // 0 is the cell index of the ID column
update.Commandtext="Delete from table where [ID]=@ID" // delete the selected row
conn.open();
update.ExecuteNonQuery();

SqlDataAdapter adapter = SqlDataAdapter("SELECT*FROM Table", conn);
conn.close();
Datatable table = new Datatable();
adapter.Fill(table);
dgv.Datasource = table.Items;
...