0

こんにちは、大文字と小文字を区別しない単一のテキストボックスでフィルタリングしたいデータテーブルがあります。RowFilterつまり、ユーザーがテキストボックスに入力を開始したときに、入力した情報を含むすべての行を表示したいと思います(これも大文字と小文字は区別されません)。

私の現在のコードは、完全一致と単一の列( "ID")のみを表示します。他にも、「タイトル」、「ユーザー名」、「会社」など、いくつかの列を含めたいと思います。

何か案は?

private void searchTextBox_TextChanged(object sender, EventArgs e)
{
   if (searchTextBox.Text.Trim() != "")
   {
      gridToTable.DefaultView.RowFilter = "ID = " + searchTextBox.Text;
   }
   else
   {
      gridToTable.DefaultView.RowFilter = string.Empty;

   }

}
4

2 に答える 2

2

で使用LIKEし、RowFilterすべてのflterを。で連結できますOR

var rowFilter = string.Format(
        "ID LIKE '%{0}%' OR TITLE LIKE '%{1}%' OR Company LIKE '%{2}%' OR UserName LIKE '%{3}%'"
        , txtSearchID.Text
        , txtSearchTitle.Text
        , txtSearchCompany.Text 
        , txtSearchUserName.Text
    );  
gridToTable.DefaultView.RowFilter = rowFilter;

DataColumn.Expression Property (と同じ構文DataView.RowFilter

しかし、正直なところ、LINQ-to-DataSetはるかに強力なので、代わりに使用することをお勧めします。

例えば:

DataTable tblFiltered = gridToTable.AsEnumerable()
                       .Where(r => r.Field<int>("ID").ToString().Contains(txtSearchID.Text) 
                                || r.Field<string>("TITLE").Contains(txtSearchTitle.Text)
                                || r.Field<string>("Company").Contains(txtSearchCompany.Text)
                                || r.Field<string>("UserName").Contains(txtSearchUserName.Text))
                       .CopyToDataTable();
于 2012-06-18T21:15:00.937 に答える
-1

グリッドは、データフィルタリングの3つの補完的な方法を提供します。Row.Filtered-データを表示または非表示にする最も簡単な方法。ただし、偶数駆動型のデータモデルはサポートされていないため、より複雑なアプリケーションには役立ちません。この方法では、プログラマーは行の可視性を手動で制御し、データを並べ替えたりグループ化したり、複雑な階層構造にすることができることを考慮する必要があります。

IFilterインターフェース-最も効率的で便利なフィルタリング方法。プログラマーは、IFilterインターフェースを継承し、IsFilteredメソッドを実装する必要があります。このメソッドは、グリッドがフィルタリングが必要かどうかを決定する引数として行を使用します。

列のグラフィカルフィルター。この機能により、プログラマーはインタラクティブなデータフィルタリングに使用できるグラフィカルフィルターを実装できます。ドロップダウンボックスに配置されたグラフィカルコントロールは、フィルターとして使用できます。このようなフィルターの実装は、dapforにアクセスできる詳細をユーザーコントロールに提供できるおなじみのUITypeEditorに基づいています。com

于 2012-11-05T08:27:43.927 に答える