データソースへのバインド

DataSourceプロパティを介して、データソースとバインド (結びつけ) できます。このときデータソースの値を変更するとDataGridViewも更新され、逆にDataGridViewのセルの値を変更するとデータソースも更新されます。

DataTable table = new DataTable();
table.Columns.Add();

table.Rows.Add(0);
table.Rows.Add(1);

dataGridView.DataSource = table;
Windowsフォームにおける「データ・バインディング」(1/3) - @IT 初音玲 (2010/11/16)

データソースからの削除

データソースから項目が削除されると、それがバインドされている行のDataBoundItemはnullとなり、セルの値もnullとなります。

DataTable table = new DataTable();
table.Columns.Add();
table.Rows.Add(0);
dataGridView.DataSource = table;


DataGridViewRow viewRow = dataGridView.Rows[0];
DataRow row = ((DataRowView)viewRow.DataBoundItem).Row;

DataRowState state1 = row.RowState;   // Added
object view1 = viewRow.DataBoundItem; // DataRowView
object o1 = viewRow.Cells[0].Value;   // "0"

row.Delete();

DataRowState state2 = row.RowState;   // Detached
object view2 = viewRow.DataBoundItem; // null
object o2 = viewRow.Cells[0].Value;   // null

階層化されているオブジェクト

リレーションシップなどでデータソースが階層化されているとき、下層のデータは処理対象となりません。この場合にはCellFormattingイベントを捕捉し、そこでDataGridViewCellFormattingEventArgs.Valueに表示したい内容を指定します。

データソースとして直接バインドされていないデータを更新しても、DataGridViewの表示は更新されません。このような場合にはDataGridView.UpdateCellValue()で明示的に更新させます。

Microsoft Learnから検索