过滤DataGridView

我在网上搜索了我的问题的解决方案,我和我的studygrp正在制作一个datagridview,它从classLibrary获取信息。 一切正常但现在我们必须过滤它,但我能找到的只是绑定源,但这不是我的想法。 我只想要一个简单的filter,以便您可以在文本框中输入内容,如果它包含该信息,则会在datagridview上显示它。 我试过了:

((DataTable)dataGridView1.DataSource).DefaultView.RowFilter = "FromColumn like '%" + textBox1.Text + "%'"; 

但它不起作用,我希望它能够…任何可以提供帮助的人?

试试BindingSource。 它提供了广泛的过滤function

 BindingSource bs = new BindingSource(); bs.DataSource = dataGridView1.DataSource; bs.Filter = "yourColumnName like '%" + textBox1.Text + "%'"; dataGridView1.DataSource = bs; 

试试这个:

 DataView dv = ((DataTable)dataGridView1.DataSource).DefaultView; dv.RowFilter = "FromColumn like '%" + textBox1.Text + "%'"; dataGridView1.DataSource = dv; 

我发现这最能满足我的需求:

您想要在网格中显示的数据存储在BindingList中(支持INotifyPropertyCchanged,当您更新列表时它非常整洁….)所以你定义这个BindingList:

 public MyDataList = new BindingList(); 

将其分配给网格的数据源:

  myDataGrid.DataSource = MyDataList; 

当按下“filter按钮”或您想要做什么事件时:

 myDataGrid.DataSource = MyDataList.Where(ln => ln.propertyname.Contains(textBoxFilter.Text).ToList(); 

重置filterm时只需设置原始源

 MyDataGrid.DataSource = MyDataList 

希望它有所帮助,问候