0

ボタンと 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 が更新されたときに、追加した人のコードが表示されないことです。どうすれば解決できますか?

4

1 に答える 1

2

Refreshメソッドは単なる UI の更新であり、データ バインディングの更新ではありません。最適かつ簡単な方法は、 をデータ ソースとして使用し、をBindingSourceグリッドのデータ ソースとして設定することです。通常、 を更新すると、グリッドに新しいデータが表示されますが、表示されない場合は、DataTableBindingSourceDataTableBindingSource.ResetBindings(false)

コード:

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

何らかの理由でデータ テーブルを更新してもグリッドが更新されない場合は、次を呼び出すことができます。

bindingSource.ResetBindings(false); // put true if your metadata has also changed
于 2012-07-30T00:18:22.173 に答える