C# BindingSource DataTable を使ったDataGridViewのデータ削除方法教えてください

投稿者: Anonymous

以下のようにDataGridViewのDataSourceにBindingSourceを
設定してBindingSourceのDataSourceにDataTableを
設定してFormのDataGridViewを構築した場合の
DataGridViewのデータ削除方法を教えてください。
今一うまくいかずはまっております。。
初歩的な質問かもしれませんがご教示頂きたく
よろしくお願いいたします。

以下ソースを簡略化した例となります。

public partial class HogeForm : Form
{
    DataGridView dataGridView = new DataGridView();
    BindingSource bindingSource = new BindingSource();

    private void InitDataGridView()
    {
        DataTable dataTable = new DataTable("hoge");
        this.bindingSource.DataSource = dataTable;
        this.dataGridView.DataSource = bindingSource;

        DataTable table = 
          ((DataView)((BindingSource)this.dataGridView.DataSource).List).ToTable();
        DataRow row = table.NewRow();
        ~~rowにデータを設定(省略)~~
        table.Rows.Add(row);
        this.bindingSource.DataSource = table;
    }

    private void ClearDataGridView()
    {
         ?? <- DataGridViewの内容をクリアするにはどうすればよいですか?
    }
}

解決

単純にデータを消す場合は以下の通りです。

((DataTable)bindingSource.DataSource).Clear();

なお質問のコードはToTable()でデータを作成しているので当てはまらないと思いますが、削除ではなく削除状態にする場合は

foreach (var dr in ((DataTable)bindingSource.DataSource).Rows.Cast<DataRow>().ToArray())
{
    dr.Delete();
}

のように各行の状態を変更します。

回答者: Anonymous

Leave a Reply

Your email address will not be published.