2016-12-09 13 views
0

私はテキストボックスを作成し、顧客のデータベースを名前で検索したいと思っています。ほとんどの質問は外部データセットを使用していますが、これは単にcsvファイルを使用してプログラムで作成されたテーブルを使用しています。データテーブルのデータを使用するときに、データグリッドビューをフィルタリングする方法は? VB.net

+2

関連コードを追加してください。 –

+1

検索したいのですか、フィルタしますか? [Ask]を読んで[ツアー] – Plutonix

+0

を取るのが最も簡単ですIMOは、DataTableから作成したDateViewをレコードソースとして使用し、Dataviewのフィルタを使用します。 – rheitzman

答えて

1

BindingSourceを利用して、DataGridViewのデータソースとして使用できます。こうすることで、BindingSource Filterプロパティを使用して、列名に基づいて任意のタイプのフィルタを設定できます。

次のスニペットを確認してください:あなたが見ることができるように

Dim dt As New DataTable("Sample") 
    dt.Columns.Add("Id") 
    dt.Columns.Add("TimeStamp") 

    For i As Int32 = 0 To 9999 
     dt.Rows.Add(New Object() {i, DateTime.Now}) 
    Next 

    Dim bs As New BindingSource 
    bs.DataSource = dt 

    bs.Filter = "Id > 10 AND Id < 20" 

    DataGridView1.DataSource = bs 

を、私は2つの列、すなわち「ID」と「タイムスタンプ」とのDataTableを定義しました。その後、簡単なループで私はDataTableにいくつかのランダムなレコードを設定しました。Id = 0からId = 9999までです。

その後、BindingSourceを宣言し、DataSourceをDataTableに指定します。 Bindinf Sourceでは、Filterプロパティ、列名、および共通論理演算子を使用して、任意のフィルタを設定できます。

私の例では、私はidがある11と19

間続いて、我々はDataGridViewのデータソースとしてのBindingSourceを使用することができ、それらのレコードを可視化するために、唯一のId列上にあるように、フィルタを要求してきました。 DataGridView DataSourceを割り当てる前に、フィルタを適用する必要はありません。実際には、バインド後、各フィルタアプリケーションは可視化された行にすぐに反映されます。

希望します。

+0

文字列と整数に '.filter'コマンドを使用できますか? – Hywel

+0

はい、「Field」という名前の文字列フィールドがあると仮定すると、フィルタは次のようになります:bs.Filter = "Field = 'test'"、またはbs.Filter = "Field LIKE '%test%'あなたは注射のために気を付けなければならないので、フィルター自体に同意する文字列をエスケープする方が良いでしょう。 – hypnos

関連する問題