2012-09-14 118 views
0

我想在用戶單擊刪除按鈕時從datagridview中刪除行。datagridview綁定到數據表_dt,因此我從_dt刪除行並嘗試將修改的_dt重新綁定到datagridview,但不是刪除行獲取添加到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; 
     } 
    } 
+1

您不需要在那裏調用填充方法。或者如果你想在更新後使用。 –

回答

2

無需填充更新之前,也刪除此行

_dt.AcceptChanges(); 

,因爲這會從內存中刪除行,當你調用更新 只有剩下的行被更新,它不會刪除來自數據庫的行。

0

沒有必要要求填寫更新之前,因爲填充將再次從數據庫獲取數據和您的更改將丟失。所以這將爲你工作。

SqlCommandBuilder cb = new SqlCommandBuilder(_sqlDa); 
//_sqlDa.Fill(_dt); 
_sqlDa.Update(_dt); 
+0

謝謝解決我的問題 –