4

我在互联网上搜索了我的问题的解决方案,我和我的 studygrp 正在制作一个从 classLibrary 获取信息的 datagridview。所有这些都有效,但现在我们必须过滤它,但我只能通过 bindingsource 找到,但这不是我的想法。我只想要一个简单的过滤器,这样您就可以在文本框中输入一些内容,如果它包含该信息,它将在 datagridview 上显示。我试过了:

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

但它不像我想要的那样工作嗯......任何可以帮助的人?

4

3 回答 3

4

尝试绑定源。它提供了良好的广泛过滤设施

BindingSource bs = new BindingSource();
bs.DataSource = dataGridView1.DataSource;
bs.Filter = "yourColumnName like '%" + textBox1.Text + "%'";
dataGridView1.DataSource = bs;
于 2012-11-07T17:43:39.473 回答
2

尝试这个:

DataView dv = ((DataTable)dataGridView1.DataSource).DefaultView;
dv.RowFilter = "FromColumn like '%" + textBox1.Text + "%'";
dataGridView1.DataSource = dv;
于 2012-11-07T17:31:09.663 回答
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

希望对你有帮助,问候

于 2014-02-19T10:57:23.730 回答