数据表Select()方法

时间:2011-10-20 12:39:14

标签: c# winforms datagridview datatable

我有一个Datagridview,Data SourcedtCustomer 我只想根据搜索文本过滤网格视图的内容。    我尝试了以下代码

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

但这不起作用。 如果有任何机构知道解决方案,请分享。

8 个答案:

答案 0 :(得分:12)

试试这个:

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

通过调整文本来检查是否有空间要删除。

答案 1 :(得分:8)

DataTable.Select的返回值是DataRow []数组。它返回匹配的DataRows列表。你的代码目前对这些行没有任何作用。

您可以使用过滤器设置DataView并将网格的DataSource设置为DataView:

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

答案 2 :(得分:3)

您可以尝试使用DataView(未经过测试的代码) -

DataView dv = new DataView(dtSearch);
dv.RowFilter = "cust_Name like '" + txtSearch.Text + "%'";
grvCustomer.DataSource = dv;

答案 3 :(得分:2)

或试试这个;

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

答案 4 :(得分:2)

dtCustomer.Rows.Cast<DataRow>().Select(dr => (string)dr["cust_Name"].Startswith("zzz")).ToList()

答案 5 :(得分:1)

DataTable.Select返回行数组,但是绑定整个数据表而不是已过滤的行。使用这种方式或DataView

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

答案 6 :(得分:1)

你可以这样做。

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

答案 7 :(得分:0)

我认为这就是你要找的东西?

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


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

当你想回到原始数据时

grvCustomer.DataSource = dtCustomer;