使用TextBox过滤Datagridview行

use*_*204 3 c# datagridview filter winforms

我有一个绑定的datagridView,我想使用TextBox值过滤它.

我用过这段代码:

private void ChercheStextBox_TextChanged(object sender, EventArgs e)
    {
        try
        {
            ((DataTable)dataGridView3.DataSource).DefaultView.RowFilter = string.Format("LibService like '%{0}%'", ChercheStextBox.Text.Trim().Replace("'", "''"));
        }
        catch
        {

        }

    }
Run Code Online (Sandbox Code Playgroud)

但是这个代码不会过滤datagridView,即使我使用了相同的代码

在另一个datagridView中它完美地工作.我不知道在哪里

我的代码中有错误?

提前致谢.

编辑:

我删除了try catch,我收到此错误消息:

无法将'system.windows.forms.bindingsource'类型的对象强制转换为'system.data.datatable'

我该如何解决?

use*_*666 6

DataSource是一种BindingSource而不是DataTable,所以请尝试以下代码:

private void ChercheStextBox_TextChanged(object sender, EventArgs e)
    {
        var bd = (BindingSource)dataGridView3.DataSource;
        var dt = (DataTable)bd.DataSource;
        dt.DefaultView.RowFilter = string.Format("LibService like '%{0}%'", ChercheStextBox.Text.Trim().Replace("'", "''"));    
        dataGridView3.Refresh();


    }
Run Code Online (Sandbox Code Playgroud)