C#의 DataGridview에 데이터 목록을 바인딩 할 때 사용할 수있는 최상의 컬렉션은 무엇입니까? 현재 일반 목록을 사용하고 있지만 개체가 추가되거나 목록에서 제거되면 데이터 표가 업데이트되지 않습니다. BindingList 또는 ObservableCollection을 사용하여 보았지만 어떤 것이 가장 좋고 데이터 그리드에 리 바인드하지 않아도 정렬/필터링하기 쉽도록 결정할 수 없습니다. 현재 WPF로 이전 할 계획 인 .Net 3.5 프레임 워크에서 Windows 양식으로 작업하고 있습니다.C#의 DataGridView에 바인딩 할 때 사용할 유용한 컬렉션
답변
ObservableCollection<T>
는DataGridView
작동하지 않습니다. WPF 바인딩을위한 것으로 Windows Forms에서는 사용되지 않습니다.BindingList<T>
은 좋은 옵션이지만, 정렬이나 필터링을 지원하지 않습니다. 그러나 이러한 기능에 대한 사용자 정의 구현은 웹에서 찾을 수 있습니다. 당신이 정렬 및/또는 필터링 기능이 필요한 경우DataTable
는
DataTable?
또한 항목을 추가 한 직후에 DataGridview.Invalidate()를 호출하여 그리드 뷰를 다시 그리도록하고 새 항목을 포함 할 수 있습니다.
DataGridView에 가장 적합한 컬렉션 유형에 대한 일반/일반 규칙이 있다고 생각하지 않습니다.
그것은 정말 여러 가지 요인에 따라 달라집니다
- 데이터의 성격
- 작업 (있는 경우)를 DB로 UI에서 수행 할 수있는 무엇 (예 : CRUD, 정렬, 필터링)
- 데이터의 크기
등
정렬, 필터링 등을 지원하는 BindingList에서 상속받은 내 자신의 컬렉션을 만들었지 만 지금은 잘 작동하지만 많은 작업이 있었지만 실제로는 권장하지 않습니다. 너 자신 ... 이미 CodeProject 나 유사한 사이트에서 구현 된 코드가 있다고 생각한다. 찾으면 링크를 줄 것이다.
편집 :
가 나는 등 그래도 난 그것을 테스트하지 않았다 정렬 지원 IBindingList의 구현, 필터링과 this CodeProject article을 발견, 그래서 얼마나 잘 구현은 모르겠지만, 그것은 수 있습니다 그것을 밖으로 검사 할 가치가있다.
데이터 바인딩 프레임 워크는 WinForms와 WPF간에 완전히 다르므로 (일반적으로) 두 가지 모두에 "최선의 선택"이 없습니다.
WinForms의 경우 BindingList<T>
일반을 사용하면 대부분의 작업을 수행 할 수 있습니다 (개별 항목의 변경 사항은 처리하지 않지만 직접 구현해야 함).
WPF의 경우 ObservableCollection<T>
과 비슷한 용도로 사용됩니다. 이 INotifyCollectionChanged
하지 IBindingList
을 구현하고, DataGridView
약 INotifyCollectionChanged
을 알고하지 않습니다
BindingList
'BindingList
는 사실 마이크로 소프트가 있기 때문에 추가 할 때와 같은 자동 기능을 할 수있는 능력의 목록이 아니라 당신의 바인딩 컬렉션으로 컬렉션을 사용하여 reccomends 아마 당신의 최선의 선택이다 항목 제거, 콜렉션 지우기 또는 기존 항목 값 설정 중 하나입니다.
Collection Class (MSDN)
컬렉션을 DataGridview에 바인딩하려면 바인딩 목록을 사용합니다. 바인딩 목록은 상자 밖에서 정렬을 지원하지 않지만 BindinList에서 파생 된 자체 목록을 만들어 확장 할 수 있으며 사용자 고유의 정렬을 구현할 수 있습니다.
자세한 방법은 here을 참조하십시오.
- 1. DataGridView에 2 차원 컬렉션 바인딩
- 2. 데이터 테이블을 Datagridview에 바인딩
- 3. DataGridView에 대한 데이터 바인딩
- 4. Windows DataGridView에 엔터티 바인딩
- 5. WPF에서 DataGridView에 SQL 테이블 바인딩
- 6. Silverlight의 ViewModel 컬렉션 바인딩
- 7. Objective-C의 확장 가능한 컬렉션?
- 8. datagridview에 바인딩 된 datatable 문제
- 9. DataGridView에 바인딩 할 속성을 동적으로 설정하는 방법은 무엇입니까?
- 10. 바인딩 - 동작을 사용할 때 UpdateSource
- 11. 로드 할 수있는 XML을 편집 가능한 DataGridView에 바인딩
- 12. 데이터베이스보기 사용을 피하기 위해 DataGridview에 바인딩 할 ILists 병합
- 13. 비 바인딩 된 DataGridView에 DataGridViewButtonColumn를 사용하는 방법
- 14. 각 셀이 각 행보다는 바인딩 된 개체가되도록 DataGridView에 바인딩
- 15. datagridview에 바인딩 된 콤보 상자 추가
- 16. 루틴에서 무언가를 반환 할 때 유용한 방법
- 17. 예외 메시지를 사용자에게보고 할 때 유용한 정보
- 18. 안드로이드에서 파일을 캐싱 할 때 유용한 정보
- 19. DataGridview에 바인딩 된 컬렉션의 여러 항목 삭제가 영원히 걸립니다
- 20. C# Datagridview - XML 파일에 바인딩 할 때 AutoGenerateColumns를 해제 하시겠습니까?
- 21. enum을 DataGridview에 바인드 가능하게 만들기
- 22. WPF에서 데이터 바인딩 할 때 "사용할 수없는"값의 패턴
- 23. 바인딩 문제 스타일의 종속성 속성 컬렉션 형식
- 24. 사용할 컬렉션 선택에 혼란이 있음
- 25. 보고서에 액세스 할 때 TRANSFORM 쿼리 바인딩
- 26. ASP.NET MVC의 모델 바인딩 중첩 컬렉션
- 27. 스칼라 : 컬렉션 유형 매개 변수의 편리한 바인딩
- 28. 클래스에서 선언 할 때 컬렉션 속성을 초기화 할 수 있습니까
- 29. DataGridView는 입력 한 DataTable에 바인딩 할 때 빈 셀을 표시합니다.
- 30. 컬렉션 속성의 표시 값을 콤보 상자에 바인딩
또한 Linq를 사용하여 개체의 일반적인 목록에서 정렬 및 필터링을 수행하고 있습니다. 또한 BindingList을 사용하여 수행 할 수 있지만 목록을 데이터 격자에 다시 바인딩해야합니다. –
norlando