数据表 Select() 方法

Posted

技术标签:

【中文标题】数据表 Select() 方法【英文标题】:Datatable Select() Method 【发布时间】:2011-12-11 18:29:57 【问题描述】:

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

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 使用方法

七种数据库中Select Top的使用方法

查询表中数据的两种方法(select查)

只显示前几条数据的sql语句写法 七种数据库中Select Top的使用方法

Select Top在七种数据库中的使用方法(包含mysql)

数据库基础查询方法