2014-10-31 36 views
0

我想從DataGridView中刪除記錄,當選擇一條記錄時。 當我用下面的代碼中,我得到這個異常錯誤,使用winforms的C#Datagridview

string conStrings = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\ImpiDb.mdf;Integrated Security=True;Connect Timeout=30"; 
string sql = "Select * from tblImpi"; 
con = new SqlConnection(conStrings); 
con.Open(); 
dataAdapter = new SqlDataAdapter(sql, con); 
//ImpiDbDataSet impds = new ImpiDbDataSet(); 
ds = new DataSet(); 
SqlCommandBuilder cmdb = new SqlCommandBuilder(dataAdapter); 
dataAdapter.Fill(ds, "tblImpi"); 
BindingSource bndS = new BindingSource(); 
bndS.DataSource = ds.Tables["tblImpi"]; 
impdg.DataSource = bndS; 

刪除按鈕

private void btnDelete_Click(object sender, EventArgs e) 
{ 

    if (MessageBox.Show("I you sure you want to delete this record?","Delete",MessageBoxButtons.YesNo)==DialogResult.Yes) 
    { 
     impdg.Rows.RemoveAt(impdg.SelectedRows[0].Index); 
     dataAdapter.Update(ds,"tblImpi"); 
    } 
} 
+3

而問題是.....? – Tim 2014-10-31 07:09:25

+0

把try ... catch塊放入btnDelete_Click。 – Josef 2014-10-31 09:01:13

回答

0

要刪除一條記錄不過從網格刪除它不會從表中刪除它,我想。

不要直接使用DataGridView與數據源進行交互,而是這樣做。

var table = ds.Tables["tblImpi"]; 
var row = impdg.SelectedRows[0]; 
var item = (DataRowView)row.DataBoundItem; 
item.Delete(); 

// I am not 100% sure that row.DataBoundItem returns a DataRowView, 
// if it returns a DataRow you can use 
table.Rows.Remove(item); 
// instead of item.Delete(); 
+0

至少我已經設法解決這個問題,從我的代碼謝謝。 – 2014-10-31 12:41:21

0

這裏是回答這個問題。

private void btnDelete_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       if (MessageBox.Show("I you sure you want to delete this record?", "Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) 
       { 
        impdg.Rows.RemoveAt(impdg.SelectedRows[0].Index); 
        dataAdapter.Update(dt1); 



       } 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 
相關問題