数据表Select()方法

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

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

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

试试这个:

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

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

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

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

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

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

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

或试试这个;

 dataGridView.Datasource = datatable.Select("....").CopyToDataTable() 
 dtCustomer.Rows.Cast().Select(dr => (string)dr["cust_Name"].Startswith("zzz")).ToList() 

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

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

你可以做这样的事情。

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

我想这就是你要找的东西?

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

当你想回到原始数据时

 grvCustomer.DataSource = dtCustomer;