2014-10-31 2 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

+0

시도해보십시오 ... btnDelete_Click 안에 블록을 잡습니다. – Josef

답변

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

Atleast 나는이 코드를 내 코드 덕분에 해결할 수 있었다. –

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); 
      } 
     }