DataGridViewでバインド元のデータ取得
- 題名: DataGridViewでバインド元のデータ取得
- 著者: とし
- 日時: 2009/01/17 0:30:54
- ID: 23813
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: DataGridViewでバインド元のデータ取得
- 著者: きいよ
- 日時: 2009/01/17 21:50:42
- ID: 23818
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: DataGridViewでバインド元のデータ取得
- 著者: とし
- 日時: 2009/01/18 13:49:58
- ID: 23822
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
DataGridViewにDataTableをバインドしてデータを表示しています。
プログラムからDataGridViewのデータを変更するのに
DataTableの値を変更して行っています。
dataGridView1.DataSource = dataTable1;
for(int i=0;i<dataTable1.Rows.Count;i++){
DataRow row = dataTable1.Rows[i];
row["col1"] = "ああああ";
}
通常は、この方法で問題ないのですが、ソートが行われた場合困った事が起きます。
上から順番に処理を行ってエラーになった行で止まり、それ以降の行を処理しない
という仕様なのですが、ソートされた場合に「上から順番に」という事ができなくなって
しまっています。
(DataTable上では上から順番になんですが、DataGridView上ではそうは見えない状態です。)
やりたい事は、DataGridViewからバインドされている実際のDataTableの行を取得したい
と思っています。
http://dobon.net/vb/dotnet/datagrid/currentrow.html
等で紹介されている方法では、常にカレント行からDataTableの値を取得していますが
そうではなく、DataGridViewの任意の行から実際のDataTableの値を取得したいのですが
可能でしょうか? イメージ的には以下のような感じです。
for(int i=0;i<dataTable1.Rows.Count;i++){
BindingManagerBase bm =
DataGrid1.BindingContext[DataGrid1.DataSource, DataGrid1.DataMember];
DataRowView drv = (DataRowView) bm[i]; // 任意の行が欲しい
DataRow dr = drv.Row;
}
開発環境
VS2005 C#
WindowsXP