当用户点击删除按钮时,我想删除datagridview中的行.datagridview绑定到datatable _dt所以我从_dt中删除了行并尝试将修改后的_dt重新绑定到datagridview但是不是删除行添加到最后一行datagridview的一行我在这里做错了什么
private void btnDelete_Click(object sender, EventArgs e)
{
if (dataGridView1 != null && dataGridView1.SelectedRows.Count == 1)
{
string key = dataGridView1.SelectedRows[0].Cells["ID"].Value.ToString();
DataColumn[] keyColumns = new DataColumn[1];
keyColumns[0] = _dt.Columns["ID"];
_dt.PrimaryKey = keyColumns;
rowToDelete = _dt.Rows.Find(key);
_dt.Rows.Remove(rowToDelete);
_dt.AcceptChanges();
SqlCommandBuilder cb = new SqlCommandBuilder(_sqlDa);
_sqlDa.Fill(_dt);
_sqlDa.Update(_dt);
dataGridView1.DataSource = null;
dataGridView1.DataSource = _dt;
}
}
答案 0 :(得分:2)
更新前无需填写并删除此行
_dt.AcceptChanges();
因为这将从内存中删除行并在您调用update时 只更新剩余的行,它不会从数据库中删除该行。
答案 1 :(得分:0)
无需在更新前调用Fill,因为Fill将从db再次获取数据,您的更改将会丢失。所以这对你有用。
SqlCommandBuilder cb = new SqlCommandBuilder(_sqlDa);
//_sqlDa.Fill(_dt);
_sqlDa.Update(_dt);