2012-08-06 12 views
10

Po powiązaniu listy z combobox, jej dataSource.Count wynosi 5, ale liczba elementów combobox wynosi 0. jak to możliwe?Elementy ComboBox puste, ale DataSource Full

Jestem przyzwyczajony do programowania w Internecie i to jest w Windows Forms. Tak więc nie istnieje metoda combo.DataBind();.

Problem polega na tym, że próbuję ustawić programowo wybrany element. Ponieważ nie widzę kolekcji combo.Items, nie mogę ustawić żądanego elementu.


Aktualizacja

Potrzebna jest całkowita zmiana Chyba:

  • źródło danych zawiera 7 elementów
  • po związaniu z combobox, DisplayMember i ValueMember są odpowiednio wdrażane
  • z danymi za pośrednictwem GUI, mogę wyraźnie zobaczyć 7 elementów w combobox
  • combobox.DataSource.Count = 7 i combobox.Items.Count = 0

Tak więc problem jest tutaj; ponieważ po databound nie ma elementów w ItemCollection z combobox; Nie mogę wyszukać jednego pasującego i ustawić odpowiedniego.

Oto obraz dla lepszego zrozumienia (Ale jestem prawie pewien, że jestem brakuje sth prosty)

screenshot

+1

Czy odpowiednio ustawiłeś 'DataTextField' i' DataValueField'? –

+0

Lub 'DisplayMember' i' ValueMember'. Jaki typ danych znajduje się w DataSource? – Mr47

+0

Tak, może to pytanie nie jest w pełni zrozumiałe. Zdarzenie databound działa poprawnie, widzę moje elementy w combo za pośrednictwem GUI. Problem polega na debugowaniu; po przypisaniu źródeł danych combobox nie zawiera czegoś w kolekcji Items. Podobnie jak po renderowaniu, wszystkie elementy są pokazane, ale przedtem nic tam nie ma. –

Odpowiedz

21

Po dodaniu ddl.BindingContext = new BindingContext(); przed przypisaniem BindingSource, wszystko działało w porządku.

+0

Nie działa dla mnie ... –

+1

Podczas korzystania z źródła danych po raz pierwszy wszystko działa poprawnie. Jak tylko użyjesz źródła danych po raz drugi, będziesz musiał ponownie użyć bindingcontext lub stworzyć nowy taki jak Ty. – Norman

1

Jeśli rozszerzysz pozycje DataSource w debugerze, prawdopodobnie zauważysz, że pierwszy element na liście ma wartość null. Dlatego DataSource nie renderuje elementów ComboBox. Usunięcie pustych elementów z listy powinno wykonać całą pracę;

Powiązane problemy