2012-07-30 4 views
0

단추와 DataGridView가 포함 된 양식이 있습니다. DataGridView에 자동 계산 변수가 표시되지 않습니다.

DataRow drow = sql.ds.Tables["Etablissement"].NewRow(); 
      drow[1] = nom.Text; //drow[0] it's an auto-countign var 
      drow[2] = string.IsNullOrEmpty(ville.Text) ? DBNull.Value : (object)ville.Text; 
      sql.ds.Tables["Etablissement"].Rows.Add(drow); 
      SqlCommandBuilder cmb = new SqlCommandBuilder(daEtablissement); 
      daEtablissement.Update(sql.ds, "Etablissement"); 
      dgv.Refresh(); // dgv : DataGridView that i'm usign 
      XtraMessageBox.Show("Bien Ajouter !"); 
      Videz(); 
      nom.Focus(); 

문제가 DataGridView에 내가 표시되지 않습니다 추가 한 사람의 코드를 새로 고칠 때, 나는이 어떻게 해결할 수

:

버튼은 나를 데이터베이스에 새로운 사람을 추가 할 수 있습니다?

답변

2

Refresh 메서드는 UI 새로 고침이며 데이터 바인딩 새로 고침이 아닙니다. 가장 좋은 방법은 DataTable을 데이터 소스로 사용하고 BindingSource을 그리드의 데이터 소스로 사용하는 것입니다. 당신이 DataTable를 업데이트 보통 때, 그리드는 새로운 데이터를 표시해야하지만이 발생하지 않는 경우는 호출 할 수 있습니다 BindingSource.ResetBindings(false)

코드 :

BindingSource bindingSource = new BindingSource(); 
bindingSource.DataSource = myDataTable; 
myGrid.DataSource = bindingSource; 

하면 새로 고침하지 않는 데이터 테이블을 업데이트 할 어떠한 이유 당신이 부를 수있는 그리드 :

bindingSource.ResetBindings(false); // put true if your metadata has also changed 
+0

내가 사용할 코드를 나에게 줄 수 있니? –

+0

그냥 내 대답을 편집했습니다 –

+0

Form_Load 이벤트에서이 코드를 사용했습니다 : BindingSource bindingSource = new BindingSource {DataSource = sql.ds.Tables [ "Etablissement"]}}; dgv.DataSource = bindingSource; bindingSource.ResetBindings (false); 하지만 코드는 여전히 표시되지 않습니다! –

관련 문제