2016-11-02 2 views
0

これを行う方法は? (?フィルター)ユーザーの視点、C#のWinformsからdataGridViewに表示されるアイテムのリストをフィルタリングする方法(フィルタリングする)

、検索テキストボックスにユーザーの種類として、私がするのDataGridViewに表示された項目のリストが必要

ここでは、現在何が起こっているかです:

dataGridViewは、このようなデータソースとしてアイテムのリストを使用します。

dgv.DataSource = _myItemList;

_myItemListhasの各項目2つの特性(ID、説明)DGV以下

ユーザが

現在リスト内の項目を検索可能なテキストボックスがあり、ときにテキストボックスにユーザタイプ、以下のフィルタ_myItemListappears

自動のものは、このコード

foreachの(_myItemList中のvarアイテム)で発生し(このフィルタリングされたリストが表示されたのと同じ方法で、私はDGVに起こるしたいものです){ string word = item.Description; textBoxCollection.Add(word); }

 textBoxSearchEmployeeList.AutoCompleteMode = AutoCompleteMode.Suggest; 
     textBoxSearchEmployeeList.AutoCompleteSource = AutoCompleteSource.CustomSource; 
     textBoxSearchEmployeeList.AutoCompleteCustomSource = textBoxCollection; 

例:テキストボックスにユーザーの種類 "Vacの" 場合、 "Vacを" で始まる_myItemList内のすべての文字列が表示されます。ユーザーが引き続き入力すると、dgvの項目が減少します。そのため、ユーザーがテキストボックスに "Vacation"と入力すると、dgvは "Vacation"という行を1つだけ表示します。

私が何をしようとしているのか不明な場合は、教えてください。

+1

それはあなたがあなたの 'DataGridView'のデータソースとして使用タイプに依存します。例えば、[この投稿](http://stackoverflow.com/questions/40279675/auto-find-and-display-objects-when-input-keywords-in-vb)を見てください。 –

答えて

0

私はあなたがこのために探している、間違って理解していなかった場合は、

私は行のシンプルDataTableを作成しました。 (あなたはGIFで見ることができます)そして私はtextboxをフィルタリングしています。ここで、

private void textBox1_TextChanged(object sender, EventArgs e) 
     { 
      DataView dv = (dataGridView1.DataSource as DataTable).DefaultView; 
      dv.RowFilter = "Name Like '"+ textBox1.Text +"%'"; 
     } 

結果;ホープことができます

enter image description here

+0

非常に役立ちます。ありがとうございました。 – greg

+0

あなたのソリューションを実装した後で、私のList myListをDataTableに変換する必要があります。どのようにDataTableなしでそれを行うには? – greg

+0

@ linq linqを使用してリストを検索し、テキスト変更イベントの最後にデータソースとして設定します。 – Berkay

関連する問題