如何在c#中使用文本框过滤数据视图

本文关键字:文本 过滤 数据 视图 | 更新日期: 2023-09-27 18:05:12

我想用一个文本框来过滤一个datagridview,这个文本框包含在一个选项卡中,但它不起作用,下面是代码:

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

如何在c#中使用文本框过滤数据视图

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

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

另外,不要忘记TextBox可能包含'字符,所以你需要转义它:

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

,或者清洁:

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

试试这个,不管字母在哪里(开头、中间还是结尾),它都会搜索这个字母

    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)
        {
        }