web-dev-qa-db-ja.com

データテーブルのSelect()メソッド

DatagridviewとData Source is dtCustomerグリッドビューのコンテンツを検索テキストに基づいてフィルタリングしたいだけです。次のコードを繰り返しました

DataTable dtSearch =  dtCustomer;
dtSearch.Select("cust_Name like '" + txtSearch.Text + "%'");
grvCustomer.DataSource = dtSearch;

しかし、これは機能していません。誰かが解決策を知っている場合は共有してください。

11
Nithesh

これを試して:

dtSearch.DefaultView.RowFilter = "cust_Name like '" + txtSearch.Text + "%'";  

そして、テキストをトリミングして、削除するスペースがあるかどうかを確認します。

12
Boomer

DataTable.Select の戻り値はDataRow []配列です。一致するDataRowsのリストを返します。現時点では、コードはそれらの行に対して何もしません。

フィルターを使用して DataView を設定し、グリッドのDataSourceをDataViewに設定できます。

DataView dv = new DataView(dtSearch);
dv.RowFilter = "...";
grvCustomer.DataSource = dv;
8
Paul Williams

またはこれを試してください。

dataGridView.Datasource = datatable.Select("....").CopyToDataTable()
3
Delog

DataView (コードはテストされていません)-

DataView dv = new DataView(dtSearch);
dv.RowFilter = "cust_Name like '" + txtSearch.Text + "%'";
grvCustomer.DataSource = dv;
3
ipr101
dtCustomer.Rows.Cast<DataRow>().Select(dr => (string)dr["cust_Name"].Startswith("zzz")).ToList()
2
Jayg

このようなことができます。

DataView dv1 = dtDefault.DefaultView; 
dv1.RowFilter = "CusGroupId=1 and CustomerCode LIKE '"+txtCustomer.Text +"%'";  
DataTable dt=dv1.ToTable();
2
Example

DataTable.Selectは行の配列を返しますが、フィルターされた行ではなくデータテーブル全体をバインドしています。このように使用するか、DataView

DataTable dtSearch =  dtCustomer;
var filter = dtSearch.Select("cust_Name like '" + txtSearch.Text + "%'");
grvCustomer.DataSource = filter.ToList();
1
hungryMind

これはあなたが探しているものだと思いますか?

//DataTable dtSearch =  dtCustomer;
//dtSearch.Select("cust_Name like '" + txtSearch.Text + "%'");


grvCustomer.DataSource = dtCustomer.Select("cust_Name like '" + txtSearch.Text + "%'");

そして、元のデータに戻りたいとき

grvCustomer.DataSource = dtCustomer;
0
Jason Politis