2011-08-09 37 views
8

我累了篩選使用文本框一個DataGridView,文本框包含在一個標籤頁,但它不工作,這裏是代碼:如何在C#中使用文本框過濾datagridview?

private void textBox1_TextChanged(object sender, EventArgs e) 
    { 
     try 
     { 
      ((DataTable)dataGridView1.DataSource).DefaultView.RowFilter = "like '%" + textBox1.Text.Trim() + "%' "; 
     } 
     catch (Exception) { } 

    } 
+0

你有抓到的異常嗎? – jv42

+0

語法錯誤:'Like'運算符前缺少操作數。 – amer

回答

18

RowFilter允許您根據列值指定一個過濾器。所以LIKE適用於特定列,而不適用於整行。所以,你的情況應該是

"YourColumn like '%" + textBox1.Text.Trim() + "%' 

而且,不要忘記,文本框可以包含'字符,所以你要逃避它:

"YourColumn like '%" + textBox1.Text.Trim().Replace("'", "''") + "%' 

或者,清潔:

string.Format("YourColumn like '%{0}%'", textBox1.Text.Trim().Replace("'", "''")); 
+1

+1我認爲你應該澄清「適用於專欄」,因爲它可能會在以後混淆某人。 – 2011-08-09 12:50:00

+1

+1指出從char'逃生char –

+0

@Code Monkey,我不知道我怎麼可以澄清......你會怎麼說呢? –

4

試試這個搜索字母,不管它在哪裏(開頭,中間或結尾)

private void TextBox1_TextChanged(object sender, EventArgs e) 
    { 
     try 
     { 
      //this code is used to search Name on the basis of TextBox1.text 
      ((DataTable)dataGridView1.DataSource).DefaultView.RowFilter = string.Format("Column_Name like '%{0}%'", TextBox1.Text.Trim().Replace("'", "''")); 
     } 
     catch (Exception) 
     { 

     } 
    } 

這是從第一個字母開始逐一搜索下一個。

try 
     { 
      ((DataTable)dataGridViewX1.DataSource).DefaultView.RowFilter = "Column_Name like'" + textBox1.Text.Trim().Replace("'", "''") + "%'"; 
     } 
     catch (Exception) 
     { 

     } 
相關問題