过滤DataGridView

时间:2012-11-07 17:17:21

标签: c# winforms datagridview

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

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

但它不能像我希望它那样......任何可以提供帮助的人?

3 个答案:

答案 0 :(得分:4)

尝试使用BindingSource。它提供了广泛的过滤功能

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

答案 1 :(得分:2)

试试这个:

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

答案 2 :(得分:2)

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

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

public MyDataList = new BindingList<MyDataItem>();

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

 myDataGrid.DataSource = MyDataList; 

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

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

重置过滤器时只需设置原始源

MyDataGrid.DataSource = MyDataList

希望它有所帮助,问候