2013-06-06 53 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