Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从“datatable”绑定的“datagridview”中筛选数据`_C#_.net_Winforms_Datagridview_.net 4.0 - Fatal编程技术网

C# 从“datatable”绑定的“datagridview”中筛选数据`

C# 从“datatable”绑定的“datagridview”中筛选数据`,c#,.net,winforms,datagridview,.net-4.0,C#,.net,Winforms,Datagridview,.net 4.0,我正试图在exchange事件上过滤datagridview中从数据表绑定的数据,但当我清除datagridview中的所有数据时不起作用 返回到它是原始数据(我的意思是没有过滤器),它显示的是最后一个 数据过滤 最后一个问题是,在本文中使用LINQ方法的过滤器比我使用的过滤器好吗 因为我有大约7个文本框用作过滤器 private void TB_FirstName_TextChanged(object sender, EventArgs e) { if (!st

我正试图在
exchange
事件上过滤
datagridview
中从
数据表
绑定的
数据,但当我清除
datagridview中的所有数据时
不起作用 返回到它是原始数据(我的意思是没有过滤器),它显示的是最后一个 数据过滤

最后一个问题是,在本文中使用LINQ方法的过滤器比我使用的过滤器好吗

因为我有大约7个
文本框
用作过滤器

    private void TB_FirstName_TextChanged(object sender, EventArgs e)
    {
        if (!string.IsNullOrWhiteSpace(TB_FirstName.Text))
        {
            (DGV_SearchResult.DataSource as DataTable).DefaultView.RowFilter = string.Format("NAM LIKE '%{0}%'", TB_FirstName.Text);
        }
    }

当文本框为空时,添加一个else来重新绑定数据源,如

private void TB_FirstName_TextChanged(object sender, EventArgs e)
{
    if (!string.IsNullOrWhiteSpace(TB_FirstName.Text))
        {
            (DGV_SearchResult.DataSource as DataTable).DefaultView.RowFilter = string.Format("NAM LIKE '%{0}%'", TB_FirstName.Text);
        }
    else
        { 
           // Load data again
        }
}

要重置筛选器,应将
RowFilter
属性设置为
string。为空或为空:

private void TB_FirstName_TextChanged(object sender, EventArgs e)
{
    var dt = DGV_SearchResult.DataSource as DataTable;
    if (!string.IsNullOrWhiteSpace(TB_FirstName.Text))
        dt.DefaultView.RowFilter = string.Format("NAM LIKE '%{0}%'", TB_FirstName.Text);
    else
        dt.DefaultView.RowFilter = string.Empty;
}

最好插入一个BindingSource!