WPF通过文本框过滤数据网格

sg3maiej  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(127)

我一直在到处寻找,我不能找到一种方法来过滤我的datagrid基于我的textBox的值。我有一个简单的DataGrid

<DataGrid Name="myGrid" HorizontalAlignment="Left" Height="399" 
                  Margin="272,150,0,0" VerticalAlignment="Top" Width="735"/>

当我的表格加载。我有这个函数来填充datagrid:

public MainWindow()
{
    InitializeComponent();
    myGrid.ItemsSource = datatable;
}

我有一个TextBox名称“txtSearch”,我的目标是过滤数据网格并找到包含txtSearch.Text的所有行(并隐藏其他行)
有人能举个例子吗?

6psbrbz9

6psbrbz91#

您可以将DataViewRowFilter属性设置为筛选器表达式。这就是如何过滤DataTable
这里有一个基本的例子,应该给你给予的想法:

public partial class MainWindow : Window
{
    DataTable _dataTable;
    public MainWindow()
    {
        InitializeComponent();
        _dataTable = new DataTable();
        _dataTable.Columns.Add(new DataColumn("Name"));
        _dataTable.Columns.Add(new DataColumn("Id"));
        _dataTable.Rows.Add("First", "1");
        _dataTable.Rows.Add("Second", "2");
        myGrid.ItemsSource = _dataTable.DefaultView;
    }

    private void txtSearch_TextChanged(object sender, TextChangedEventArgs e)
    {
        string filter = txtSearch.Text;
        if (string.IsNullOrEmpty(filter))
            _dataTable.DefaultView.RowFilter = null;
        else
            _dataTable.DefaultView.RowFilter = string.Format("Name Like '%{0}%' OR Id Like '%{0}%'", filter);
    }
}

相关问题