DataSource(DataTable)を検索する

  • 2010.01.13 Wednesday
  • 12:55
たとえば、DataGridViewにcsvファイルなどのデータを書き出したとする。

Rows.Addでやってしまうとソートやら検索ができないので、
 
Dim tData As DataTable
Dim rData As DataRow = tData.NewRow 'tDataにはColumnを設定してあげる
‌ 
'CSVを読み込んでrDataへ設定
‌ 
tData.Rows.Add(rData)
‌ 
Me.DataGridView.DataSource = tData

とか言う感じでデータをDataTable(DataSource)に落とし込む。

で、データベースを読み込んできた場合は、SQL分や
BindSource.Filter = "条件"という感じで検索できるのだが、

ただのCSVやTXT(テキスト)データを読み込んだ場合はどうやってやるのだろう?と
いろいろ試行錯誤してみる。

このやり方が正しいかどうかはわからないが、こんな感じで解決
 
Dim tData As DataTable = CType(Me.DataGridView.DataSource, DataTable)
Dim vData As DataView = tData.DefaultView
‌ 
If FindSource <> "" Then
  vData.RowFilter = FindSource
‌ 
  If vData.Count = 0Then
     Call MessageBox.Show("データは見つかりませんでした。")
     vData.RowFilter = Nothing
  End If
‌ 
Else '解除
  vData.RowFilter = Nothing
End If

FindSourceの中身は条件式になります。
たとえば、"データ1"というColumnがあって、検索したいデータが"あいうえお"なら
 
"データ1 = 'あいうえお'"

といった感じ。
細かいことはDataView.RowFilterのリファレンスなどを参照してください。

で、その条件式をDataView.RowFilterに入れてあげれば検索条件に一致したものだけ
DataGridViewに表示される仕組み、
もし一致しない場合は、DataViewのCountが0になる。

あと、検索条件を解除したい場合はNullを入れてあげればよい

上で言うところの、vData.RowFilter = Nothingがそれ


他にも方法はあると思いますが、私なりの解決方法です。

ちなみに、ソート解除は以前書いたこちらをどうぞ


追記
例えば、先頭行だけ非表示にしたいなどを考えて、
 
Me.DataGridView.Rows(0I).Visible = False 

とするとエラーが発生する。

DataGridView

現在のカレンシー マネージャの位置に関連付けられた行を非表示にすることはできません。


これは、DataSourceに何も入っていないデータならば可能だが、
上のようにDataTableなどのソースが入っている場合は、DataGridViewではなく、
ソース側(DataTableなど)で操作しなければならないためである。

どうしても非表示にしたい場合は、RowFilterで条件を設定するしか方法はないようだ。

参考URL
DataGridViewのエラー


関連投稿
検索中(DataView.RowFilterしている)のDataTableからさらに検索する 追記:検索中に別の検索をする
DataViewのデータ(抽出結果)からDataTableの位置を検索
DataGridViewのソート解除
DataViewの検索フィルタ〜VB2008

 
コメント
コメントする








    
この記事のトラックバックURL
トラックバック

calendar

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
293031    
<< December 2019 >>

search this site.

よく使う、検索される投稿

categories

■Google AD■

アマゾン

楽天

selected entries

archives

recent comment

  • Macで作った大きなファイルをWindowsへ分割して転送する
    rockecco (11/18)
  • Macで作った大きなファイルをWindowsへ分割して転送する
    汐里 (11/17)
  • H3 SRB-3燃焼試験
    rockecco (08/30)
  • H3 SRB-3燃焼試験
    綿棒 (08/29)
  • ブレークポイントは現在の設定ではヒットしません〜ソリューションのデバッグ
    B.T (08/09)
  • 山の白い看板
    rockecco (06/06)
  • 山の白い看板
    田舎人 (05/08)
  • あの、クラスとかメソッドとかプルダウンできるバーって〜Visual Studio 2015
    rockecco (04/27)
  • あの、クラスとかメソッドとかプルダウンできるバーって〜Visual Studio 2015
    NS (04/27)
  • MacでBlu-ray編 〜 BD-Rを焼く その3 サポセン編
    rockecco (04/23)

recent trackback

profile


※当ブログはリンクフリーですが、 取材や雑誌等で掲載される場合は、事前にお知らせください

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM