3

我正在创建一个应该能够获取任何类型列表的控件。基本上如下代码:

void BindData(IList list)
{
    BindingSource bs = new BindindSource();
    bs.DataSource = list;
    this.DataGridView.DataSource = bs;    
}

现在我有一个文本框,我想用它来过滤网格中的数据。我认为它就像设置 bs.Filter 属性一样简单,但显然不是。bs.SupportsFiltering 也返回 false。

这是我使用 IList 的问题吗?如果是这样,我可以使用另一个集合类/接口来达到相同的效果吗?(同样,我不确定列表中对象的类型。

4

2 回答 2

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;
于 2009-10-01T15:12:11.930 回答
0

IBindingListView接口通过添加对列表过滤的支持来补充 IBindingList 接口的数据绑定功能。

可以在这里找到一些通用 IBindingListView 实现的解决方案。

于 2009-10-01T01:53:03.517 回答