数据表 Select() 方法
Posted
技术标签:
【中文标题】数据表 Select() 方法【英文标题】:Datatable Select() Method 【发布时间】:2011-12-11 18:29:57 【问题描述】:我有一个 Datagridview,Data Source
是 dtCustomer
我只想根据搜索文本过滤网格视图的内容。
试了下面的代码
DataTable dtSearch = dtCustomer;
dtSearch.Select("cust_Name like '" + txtSearch.Text + "%'");
grvCustomer.DataSource = dtSearch;
但这不起作用。 如果有人知道解决方案,请分享。
【问题讨论】:
【参考方案1】:试试这个:
dtSearch.DefaultView.RowFilter = "cust_Name like '" + txtSearch.Text + "%'";
并通过修剪文本检查是否有空间要删除。
【讨论】:
【参考方案2】:DataTable.Select 的返回值是一个 DataRow[] 数组。它返回匹配 DataRows 的列表。您的代码目前对这些行不执行任何操作。
您可以使用过滤器设置DataView,并将网格的 DataSource 设置为 DataView:
DataView dv = new DataView(dtSearch);
dv.RowFilter = "...";
grvCustomer.DataSource = dv;
【讨论】:
【参考方案3】:您可以尝试使用DataView(代码未测试)-
DataView dv = new DataView(dtSearch);
dv.RowFilter = "cust_Name like '" + txtSearch.Text + "%'";
grvCustomer.DataSource = dv;
【讨论】:
【参考方案4】:或者试试这个;
dataGridView.Datasource = datatable.Select("....").CopyToDataTable()
【讨论】:
【参考方案5】:dtCustomer.Rows.Cast<DataRow>().Select(dr => (string)dr["cust_Name"].Startswith("zzz")).ToList()
【讨论】:
【参考方案6】:你可以这样做。
DataView dv1 = dtDefault.DefaultView;
dv1.RowFilter = "CusGroupId=1 and CustomerCode LIKE '"+txtCustomer.Text +"%'";
DataTable dt=dv1.ToTable();
【讨论】:
【参考方案7】:DataTable.Select 返回行数组,但您绑定的是整个数据表而不是过滤行。使用这种方式或DataView
DataTable dtSearch = dtCustomer;
var filter = dtSearch.Select("cust_Name like '" + txtSearch.Text + "%'");
grvCustomer.DataSource = filter.ToList();
【讨论】:
【参考方案8】:我想这就是你要找的东西?
//DataTable dtSearch = dtCustomer;
//dtSearch.Select("cust_Name like '" + txtSearch.Text + "%'");
grvCustomer.DataSource = dtCustomer.Select("cust_Name like '" + txtSearch.Text + "%'");
当你想回到原始数据时
grvCustomer.DataSource = dtCustomer;
【讨论】:
以上是关于数据表 Select() 方法的主要内容,如果未能解决你的问题,请参考以下文章
“取出数据表中第10条到第20条记录”的sql语句+select top 使用方法
只显示前几条数据的sql语句写法 七种数据库中Select Top的使用方法