2012-08-06 7 views
10

Dopo il binding di un elenco a combobox, il suo dataSource.Count è 5 ma, il conteggio di articoli combobox è 0. come può essere?Elementi ComboBox vuoti ma DataSource Full

Sono abituato alla programmazione Web e questo è in Windows Form. Quindi non esiste il metodo combo.DataBind();.

Il problema è che sto cercando di impostare la voce selezionata a livello di programmazione. Dal momento che non vedo la raccolta combo.Items riempita, non posso impostare l'elemento desiderato.


Aggiornamento

un aggiornamento totale è necessaria immagino:

  • origine dati contiene 7 articoli
  • Quando è legato al combobox, DisplayMember e ValueMember opportunamente attuate
  • dopo databound, attraverso la GUI, posso vedere chiaramente i 7 elementi nella casella combinata
  • combobox.DataSource.Count = 7 e combobox.Items.Count = 0

Quindi il problema è qui; poiché dopo il databound non ci sono articoli in ItemCollection di combobox; Non riesco a cercarne uno per abbinarlo e impostare quello appropriato.

Ecco un immagine per una migliore comprensione (ma sono abbastanza sicuro che mi manca qc semplice)

screenshot

+1

Hai impostato 'DataTextField' e' DataValueField' di conseguenza? –

+0

Oppure "DisplayMember' e" ValueMember ". Quale tipo di dati è in DataSource? – Mr47

+0

Sì, forse la domanda non è completamente comprensibile. L'evento del database sta funzionando con successo, posso vedere i miei elementi nel combo attraverso la GUI. Il problema è, nel debug; dopo l'assegnazione dell'origine dati la casella combinata non contiene qualcosa nella raccolta Articoli. Come dopo il rendering, tutti gli oggetti sono mostrati ma prima non c'è nulla. –

risposta

21

Dopo aver aggiunto ddl.BindingContext = new BindingContext(); prima della cessione BindingSource, tutto ha funzionato bene.

+0

Non funziona per me ... –

+1

Quando si utilizza l'origine dati la prima volta tutto funziona correttamente. Non appena si utilizza l'origine dati una seconda volta è necessario riutilizzare anche il bindingcontext o crearne uno nuovo come hai fatto tu. – Norman

1

Se si espanderanno gli elementi DataSource nel debugger, probabilmente si noterà che il primo elemento nell'elenco è nullo. Ecco perché DataSource non rende gli oggetti ComboBox. Rimuovere gli oggetti nulli dalla lista dovrebbe fare tutto il lavoro;