2012年12月8日土曜日

[.net]DataTable.Selectメソッドではまった事[追記]

DataGridViewとDataTable.Selectの組み合わせで処理をしようしてはまったのでメモ。
(2012/12/15追記有り)

処理の流れとしては
  1. DBからDataTableを取得。
  2. DataTableにチェックボックスの列を追加。
    (Boolean型でDataColumnsを追加)
  3. DataGridViewのDataSourceにDataTableをセット
  4. DataGridViewでチェックボックスをオン/オフにする
  5. 出力ボタンを押して、チェックボックスがオンのもののみDBにデータを追加
  6. チェックボックスを全て選択する/解除するボタンを作り、処理も追加する
はまった箇所は5と6。

チェックボックスがオンのものものを抜き出す処理で、
DataTable.Select("チェックボックスの列 = True")でDataRowの配列に出力が出来るのだが、
チェックボックスを全て選択すると、この配列に入る結果がチェックボックスに入れたものと一致しない。

DataGridView上の確定とずれているのかもとDataTableを調べたが、DataTable上は正しく確定されている。
仕方ないので、DataTableをFor文で回して抜き出す事に。
DataTable.Selectメソッド内でのバグかなぁ。

2012/12/15追記
スッキリはしないけど解決しました。
DataGridViewのDataSourceにDataTableをセットした後に、DataGridView.Selectを指定する。
指定した後は、正しく値が取れるようになりました。

0 件のコメント:

コメントを投稿