【问题标题】:WPF filter datagrid through textboxWPF通过文本框过滤数据网格
【发布时间】:2017-12-10 09:34:23
【问题描述】:

我一直在到处寻找,我就是无法做到.. 我有一个简单的DataGrid

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

当我的表单加载时。我有这个功能来填充数据网格:

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

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

有人可以举个例子吗?

【问题讨论】:

  • 是否有要过滤的特殊字段或所有字段?
  • @RomanoZumbé 我想过滤每个字段
  • 这对我没有帮助。我需要一个针对我的确切问题的示例(我没有将项目添加到数据网格中,但我填写了它)

标签: c# wpf filter datagrid


【解决方案1】:

您可以将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);
    }
}

【讨论】:

  • 当信息来自List&lt;object&gt; 时是否可以应用此方法?
猜你喜欢
  • 1970-01-01
  • 2016-01-20
  • 2011-06-28
  • 1970-01-01
  • 1970-01-01
  • 2012-12-19
  • 1970-01-01
  • 1970-01-01
  • 2015-02-26
相关资源
最近更新 更多