过滤来自`datatable`的`datagridview`中的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了过滤来自`datatable`的`datagridview`中的数据相关的知识,希望对你有一定的参考价值。

我试图在datagridview事件中过滤data table范围内的exchange中的数据,但是当我清除datagridview的所有数据时没有返回它是原始数据(我的意思是没有过滤器)它显示的所有数据都是最后过滤的数据

最后一个问题是在这个link answer中使用LINQ方法的过滤器比我使用的更好吗?

因为我有大约7个textbox用作过滤器

    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);
        }
    }
答案

要重置过滤器,您应将RowFilter属性设置为string.Empty或null:

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;
}
另一答案

一旦文本框为空,添加一个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
        }
}

以上是关于过滤来自`datatable`的`datagridview`中的数据的主要内容,如果未能解决你的问题,请参考以下文章

过滤 DataTable 的 AJAX 响应

将 DataGrid 绑定到两个 DataTable

wpf datagrid过滤器列标题值访问

如何将 DataTable 绑定到 Datagrid

DataTables 过滤输入图像变化

过滤从 `datatable` 界定的 `datagridview` 中的数据