문제
누구든지 다음을 구현하는 일반 컬렉션 클래스의 좋은 구현을 제안할 수 있습니까? IBindingListView
& IBindingList
인터페이스하고 필터링 및 검색 기능을 제공합니까?
현재 옵션은 다음과 같습니다.
- 다른 사람이 작성하고 테스트한 클래스 사용
- 다음에서 상속
BindingList<T>
, 그리고 구현IBindingListView
인터페이스 - 처음부터 사용자 정의 컬렉션을 작성하여 구현
IBindingListView
그리고IBindingList
.
분명히 첫 번째 옵션이 내가 선호하는 선택입니다.
해결책
나는 몇 년 전의 오래된 MSDN 포럼 게시물에서 찾은 구현을 사용하고 구축했지만 최근에 다시 검색하여 다음과 같은 sourceforge 프로젝트를 발견했습니다. 바인딩목록보기.꽤 괜찮아 보이는데 아직 해킹된 버전을 교체하기 위해 가져오지 않았습니다.
너겟 패키지: 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");
다른 팁
다음은 무대 뒤에서 방법 2와 3에 대한 도움이 있습니다.Windows Forms 데이터 바인딩을 위한 필터링 구현
제휴하지 않습니다 StackOverflow