如何使用C#中的文本框过滤datagridview?

时间:2011-08-09 12:45:15

标签: c# winforms datagridview filter

我厌倦了使用文本框过滤datagridview,文本框包含在标签页中,但它不起作用,这里是代码:

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

    }

2 个答案:

答案 0 :(得分:18)

RowFilter允许您根据列值指定过滤器 。因此LIKE适用于特定列,而不适用于整行。所以你的病情应该是

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

另外,不要忘记TextBox可能包含'字符,因此您需要将其转义:

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

或者,清洁:

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

答案 1 :(得分: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)
        {

        }