2016-11-20 2 views
1

개체 목록이 있고 매초마다 DataGridView를 리 바인드하고 싶습니다. 나는 많은 것들, bindingsource, INotifyPropertyChanged 인터페이스를 가진 BindingList를 시도했다. 그들은 코드에서 정적 컬렉션을 가지고있을 때 훌륭하게 작동하지만 데이터베이스에서 데이터 소스를 업데이트해야합니다. 이렇게하면 각 객체를 반복하고 새롭거나 삭제 된 BindingList를 확인해야합니다.하지만 솔루션입니다. 나는 모든 초에서 다음과 같이 작성 선호 :DataGridView 컨트롤 DataSource 업데이트 C# Win Forms

BindingListObeject = new BindingList<MyObject>(ListOfMyObjects); 

또는

BindingListObeject.Clear(); 
//in loop 
BindingListObeject.Add(new_object); 

DataGridView를 스크롤 할 것이다 또한 선택된 셀은 데이터 소스를 리 바인드 한 후 선택해야합니다. 그리드가 깜빡 거리지 않아야합니다.

어떻게 관리 할 수 ​​있습니까? 나는 원하는 물건 목록을 얻기 위해 EF를 사용한다.

+0

깜박임을 피하려면 Suspend/ResumeLayout을 사용해 보셨습니까? – McNets

+0

그래, 시도, 여전히 깜박임 –

답변

1

ObservableCollection() 또는 CollectionChange 이벤트

와 다른 수집을 시도하고 이제까지 myCollection = ... 아무것도 같은 것을하지 않는다는 ... 그게 전부는 여전히 잠시 myCollection을위한 새로운 핸들, 그리드와 새로운 객체를 만들 이전 핸들에 묶여있다. 컬렉션을 변경하고 갱신하지 마십시오.

+0

그것은 작동하는 것,하지만 볼 때 gridview 데이터 소스 격자 행을 영향을받지 않습니다. 테스트를 위해 내 목록에서 항목을 제거하고 데이터 항목을 다시 바인딩하는 중입니다.보기 항목이 제거되었지만 모든 항목이 정상이지만 표 행은 여전히 ​​같은 수입니다. 더 디버그하고 여기에 결과를 입력합니다. –

+0

목록에서 항목 하나를 먼저 제거합니다. , 다시 데이터 소스를 설정 한 다음 DataGridView.refresh()를 설정하지만 격자 행 수는 전혀 반영되지 않습니다. 어떻게 든 코드 측면에서 행을 업데이트해야합니다.보기 항목이 제거됩니다. 뭐가 잘못 되었 니? –

+0

옵션이 아닌 것 같습니다. ObservableCollection 은 IBindingList가 아니라 INotifyCollectionChanged를 구현하며 DataGridView는 INotifyCollectionChanged에 대해 알지 못합니다. :(아이디어가 있으십니까? 다시 win 형태로 사용하고 싶습니다. –

관련 문제