通用IBindingListView实现

时间:2008-08-26 22:32:52

标签: .net data-binding

任何人都可以建议实现IBindingListView&的通用集合类的良好实现。 IBindingList接口并提供过滤和搜索功能?

我将目前的选项视为:

  • 使用其他人编写并测试过的课程
  • 继承BindingList<T>,并实施IBindingListView接口
  • 从头开始编写自定义集合,实施IBindingListViewIBindingList

显然,第一个选项是我的首选。

3 个答案:

答案 0 :(得分:15)

我使用并构建了几年前我在MSDN论坛上发现的一个实现,但最近我再次搜索并找到了一个名为BindingListView的sourceforge项目。它看起来很不错,我还没有把它拉进去替换我的黑客版本。

nuget包:Equin.ApplicationFramework.BindingListView

示例代码:

var lst = new List<DemoClass>
{
    new DemoClass { Prop1 = "a", Prop2 = "b", Prop3 = "c" },
    new DemoClass { Prop1 = "a", Prop2 = "e", Prop3 = "f" },
    new DemoClass { Prop1 = "b", Prop2 = "h", Prop3 = "i" },
    new DemoClass { Prop1 = "b", Prop2 = "k", Prop3 = "l" }
};
dataGridView1.DataSource = new BindingListView<DemoClass>(lst);
// you can now sort by clicking the column headings 
//
// to filter the view...
var view = (BindingListView<DemoClass>)dataGridView1.DataSource;            
view.ApplyFilter(dc => dc.Prop1 == "a");

答案 1 :(得分:4)

以下是方法2和3的帮助 幕后故事:实现Windows窗体数据绑定的过滤

http://www.microsoft.com/downloads/details.aspx?FamilyID=4af0c96d-61d5-4645-8961-b423318541b4&displaylang=en

答案 2 :(得分:1)

我能想到的几个解决方案:

  1. SubSonic Project 有一个非常好的BindlingList<T>实现,它是开源的。虽然这可能需要使用整个SubSonic二进制文件来使用它们的实现。

  2. 我喜欢使用Power Collections项目中的类。从那里的一个基础集合继承并实现IBindingListView非常简单。