4

私の問題の解決策をインターネットで検索しました。私と私の studygrp は、classLibrary から情報を取得する datagridview を作成しています。これですべて機能しますが、フィルタリングする必要がありますが、バインディングソースで見つけることができますが、それは私が考えていたことではありません。テキストボックスに何かを入力して、その情報が含まれている場合はデータグリッドビューに表示できるように、単純なフィルターが必要です。私はもう試した:

((DataTable)dataGridView1.DataSource).DefaultView.RowFilter = "FromColumn like '%" + textBox1.Text + "%'";

しかし、私が望んでいるようには機能しません... 助けてくれる人はいますか?

4

3 に答える 3

4

BindingSourceを試してください。それはフィルタリングの優れた広範な機能を提供します

BindingSource bs = new BindingSource();
bs.DataSource = dataGridView1.DataSource;
bs.Filter = "yourColumnName like '%" + textBox1.Text + "%'";
dataGridView1.DataSource = bs;
于 2012-11-07T17:43:39.473 に答える
2

これを試して:

DataView dv = ((DataTable)dataGridView1.DataSource).DefaultView;
dv.RowFilter = "FromColumn like '%" + textBox1.Text + "%'";
dataGridView1.DataSource = dv;
于 2012-11-07T17:31:09.663 に答える
2

これが私のニーズに最も適していることがわかりました:

グリッドに表示したいデータは BindingList に保存されます (リストを更新するときに非常に便利な INotifyPropertyCchanged をサポートしています ....)。この BindingList を定義する場所:

public MyDataList = new BindingList<MyDataItem>();

それをグリッドのデータソースに割り当てます。

 myDataGrid.DataSource = MyDataList; 

「フィルターボタン」が押されたとき、または実行したいイベント:

myDataGrid.DataSource = MyDataList.Where(ln => ln.propertyname.Contains(textBoxFilter.Text).ToList();

フィルターをリセットするときは、元のソースを元に戻すだけです

MyDataGrid.DataSource = MyDataList

お役に立てば幸いです、ご挨拶

于 2014-02-19T10:57:23.730 に答える