DataGridViewの抽出について

タグの編集
投稿者 太一  (社会人) 投稿日時 2012/2/28 04:32:09
Form1にDataGridView1
Form2にDataGridView2

があるとします。


DataGridView1には、DataTableではなく、手動でデータを入れていっています。
(氏名、年齢、性別)と3列あります。

DataGridView1から列(性別)から男性を抽出して、その抽出したデータだけをDataGridView2に表示させたいのですが、やり方がわかりません。

DataGridView1のデータを、DataTableにいれて抽出していけばいいのかなと思ったのですが、以下のコードではDataTableに入れることが出来ませんでした。

Dim Table As DataTable
Table = DirectCast(DataGridView1.DataSource, DataTable)


DataGridViewでは、よく使うことだと思うのですが、手動でデータを入れたDataGridViewからの抽出方法を教えていただけませんでしょうか?

よろしくお願いいたします。


VB2010 Windows7



投稿者 shu  (社会人) 投稿日時 2012/2/28 07:32:55
手動でデータを入れたDataGridViewではDataSourceが
ないのでRows(~).Cells(~).Valueを取得してそれを使わないと駄目です。

DataTableを使うならDataSourceにDataTableを割り当てるかBindingSourceを
割り当てBindingSourceのDataSourceにDataTableを割り当てる必要があります。
投稿者 太一  (社会人) 投稿日時 2012/2/29 01:25:17
shuさん、返信有難う御座います。

試してやってみます。

投稿者 太一  (社会人) 投稿日時 2012/2/29 15:33:58
shuさんのアドバイスで上手く出来ました。

具体的には、過去ログで見つかった、魔界の仮面弁士さんのコードを参考にさせて頂きました。

「DataGridViewのデータをXMLで出力する。」
http://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=9529



もうひとつ分からないことがあるので質問させて下さい。
フィルタ抽出についてなのですが、変数で検索する方法を教えて下さい。

変数を使わない下の方法だと上手く出来ます。

  Dim dv As New DataView
  dv.Table = dTbl

   'フィルタ
  dv.RowFilter = "ユーザーID LIKE '佐藤浩市'"




しかし下のように変数を使用した場合、上手くいきません。

Dim dv As New DataView
dv.Table = dTbl

 'フィルタ
Dim sato As string = "佐藤浩市" 

dv.RowFilter = "ユーザーID LIKE sato"
もしくは、
dv.RowFilter = "ユーザーID =  sato"




変数を使うことは可能でしょうか?

投稿者 太一  (社会人) 投稿日時 2012/2/29 16:26:15
自己解決しました。


以下は解決したコードになります。

dv.RowFilter = String.Format("{0}='{1}'", "ユーザーID", sato)