我正在创建一个应该能够采用任何类型列表的控件。基本上是以下代码:
void BindData(IList list)
{
BindingSource bs = new BindindSource();
bs.DataSource = list;
this.DataGridView.DataSource = bs;
}
现在我有一个文本框,我想用它来过滤网格中的数据。我认为它就像设置bs.Filter属性一样简单,但显然不是。 bs.SupportsFiltering也返回false。
这是我使用IList的问题吗?如果是这样,是否有另一个我可以用来实现相同效果的集合类/接口? (同样,我不确定列表中对象的类型是什么。
答案 0 :(得分:4)
我不知道我通过的类型,我导致手动过滤数据。 这是我的代码片段。它运作良好。希望大量数据不会太慢。 ::手指交叉::
List<object> filteredData = new List<object>();
foreach (object data in this.DataSource)
{
foreach (var column in this.Columns)
{
var value = data.GetType().GetProperty(column.Field).GetValue(data,null)
.ToString();
if (value.Contains(this.ddFind.Text))
{
filteredData.Add(data);
break;
}
}
}
this.ddGrid.DataSource = filteredData;
答案 1 :(得分:0)
IBindingListView 接口通过添加对列表过滤的支持来补充IBindingList接口的数据绑定功能。
可以找到一些通用IBindingListView实现的解决方案here。