2009-11-12 2 views
4

C#의 DataGridview에 데이터 목록을 바인딩 할 때 사용할 수있는 최상의 컬렉션은 무엇입니까? 현재 일반 목록을 사용하고 있지만 개체가 추가되거나 목록에서 제거되면 데이터 표가 업데이트되지 않습니다. BindingList 또는 ObservableCollection을 사용하여 보았지만 어떤 것이 가장 좋고 데이터 그리드에 리 바인드하지 않아도 정렬/필터링하기 쉽도록 결정할 수 없습니다. 현재 WPF로 이전 할 계획 인 .Net 3.5 프레임 워크에서 Windows 양식으로 작업하고 있습니다.C#의 DataGridView에 바인딩 할 때 사용할 유용한 컬렉션

+0

또한 Linq를 사용하여 개체의 일반적인 목록에서 정렬 및 필터링을 수행하고 있습니다. 또한 BindingList 을 사용하여 수행 할 수 있지만 목록을 데이터 격자에 다시 바인딩해야합니다. – norlando

답변

8
  • ObservableCollection<T>DataGridView 작동하지 않습니다. WPF 바인딩을위한 것으로 Windows Forms에서는 사용되지 않습니다.
  • BindingList<T>은 좋은 옵션이지만, 정렬이나 필터링을 지원하지 않습니다. 그러나 이러한 기능에 대한 사용자 정의 구현은 웹에서 찾을 수 있습니다. 당신이 정렬 및/또는 필터링 기능이 필요한 경우
  • DataTable
+0

개체 그룹과 함께 DataTable을 사용할 수 있습니까? – norlando

+0

무엇을 의미합니까? 당신은 더 구체적 일 수 있습니까? –

+0

비즈니스 개체 계층이있는 3 계층 응용 프로그램이 있고 한 유형의 비즈니스 개체 컬렉션이 필요합니다. DataTable로 할 수 있습니까? 나는 DataTable이 데이터베이스의 데이터 해협에만 사용될 수 있다고 생각했다. – norlando

0

DataTable?

또한 항목을 추가 한 직후에 DataGridview.Invalidate()를 호출하여 그리드 뷰를 다시 그리도록하고 새 항목을 포함 할 수 있습니다.

0

DataGridView에 가장 적합한 컬렉션 유형에 대한 일반/일반 규칙이 있다고 생각하지 않습니다.

그것은 정말 여러 가지 요인에 따라 달라집니다
- 데이터의 성격
- 작업 (있는 경우)를 DB로 UI에서 수행 할 수있는 무엇 (예 : CRUD, 정렬, 필터링)
- 데이터의 크기

0

정렬, 필터링 등을 지원하는 BindingList에서 상속받은 내 자신의 컬렉션을 만들었지 만 지금은 잘 작동하지만 많은 작업이 있었지만 실제로는 권장하지 않습니다. 너 자신 ... 이미 CodeProject 나 유사한 사이트에서 구현 된 코드가 있다고 생각한다. 찾으면 링크를 줄 것이다.

편집 :

가 나는 등 그래도 난 그것을 테스트하지 않았다 정렬 지원 IBindingList의 구현, 필터링과 this CodeProject article을 발견, 그래서 얼마나 잘 구현은 모르겠지만, 그것은 수 있습니다 그것을 밖으로 검사 할 가치가있다.

1

데이터 바인딩 프레임 워크는 WinForms와 WPF간에 완전히 다르므로 (일반적으로) 두 가지 모두에 "최선의 선택"이 없습니다.

WinForms의 경우 BindingList<T> 일반을 사용하면 대부분의 작업을 수행 할 수 있습니다 (개별 항목의 변경 사항은 처리하지 않지만 직접 구현해야 함).

WPF의 경우 ObservableCollection<T>과 비슷한 용도로 사용됩니다. 이 INotifyCollectionChanged하지 IBindingList을 구현하고, DataGridViewINotifyCollectionChanged을 알고하지 않습니다

+0

BindingList 이 WPF에서 작동하지 않는 이유가 있습니까? – norlando

+0

'BindingList '는 WinForms가 목록 데이터 바인딩을 위해 사용하는 인터페이스 인 IBindingList 인터페이스를 사용합니다. WPF는'INotifyCollectionChanged'를 사용합니다. –

1

는 사실 마이크로 소프트가 있기 때문에 추가 할 때와 같은 자동 기능을 할 수있는 능력의 목록이 아니라 당신의 바인딩 컬렉션으로 컬렉션을 사용하여 reccomends 아마 당신의 최선의 선택이다 항목 제거, 콜렉션 지우기 또는 기존 항목 값 설정 중 하나입니다.

Collection Class (MSDN)

1

컬렉션을 DataGridview에 바인딩하려면 바인딩 목록을 사용합니다. 바인딩 목록은 상자 밖에서 정렬을 지원하지 않지만 BindinList에서 파생 된 자체 목록을 만들어 확장 할 수 있으며 사용자 고유의 정렬을 구현할 수 있습니다.

자세한 방법은 here을 참조하십시오.

관련 문제