我有一个Datagridview,Data Source
是dtCustomer
我只想根据搜索文本过滤网格视图的内容。
我尝试了以下代码
DataTable dtSearch = dtCustomer;
dtSearch.Select("cust_Name like '" + txtSearch.Text + "%'");
grvCustomer.DataSource = dtSearch;
但这不起作用。 如果有任何机构知道解决方案,请分享。
答案 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;