2013-06-06 22 views
1

我看到in this video它很容易添加一个文本框并让它驱动一个datagridView的过滤。问题是在这个视频中,似乎你必须指定要根据哪一列进行过滤。如何跨所有字段名称筛选C#dataGridView?

RowFilter = "FirstName like "%' + searchText.Text + '%" 

但是如果我想它来检查所有字段并显示该行如果有一列有我的搜索字符串在哪呢

+0

此视频现在不可用,您是否有任何现在的示例代码? – Charlotte

回答

3

你想遍历每个列的行和追加的或比较

这真的很愚蠢的代码,但希望给你的要点。例如:

StringBuilder filter = new StringBuilder(); 

foreach(var column in dataGridView.Columns) 
{ 
    if(filter.ToString() == "") 
    { 
     filter.Append(column.Name + " like '" + searchText.Text + "'"); 
    } 
    else 
    { 
     filter.Append(" OR "); 
     filter.Append(column.Name + " like '" + searchText.Text + "'"); 
    } 
} 

RowFilter = filter.ToString(); 
+0

我得到这个错误,运行该代码“无法执行”Like'操作System.Int32和System.String“ – leora

+0

@leora哎呀,抱歉。改变了语法以反映使用DataGridView。我猜想大脑上有DataTable;) –

+0

@leora,Tom有正确的想法,但是你不能像上面所说的那样对int进行类似的操作......你必须检查“列”数据类型,只做对于基于字符的字段。 – DRapp