2012-08-06 24 views
10

Bir listeyi combobox'a bağladıktan sonra, dataSource.Count değeri 5'tir, ancak combobox öğesi sayısı 0'dır. nasıl olabilir?ComboBox Öğeleri Boş ama DataSource Tam

Web programlama için kullanıyorum ve bu Windows Forms'ta. Yani combo.DataBind(); yöntem yoktur.

Burada sorun, seçilen öğeyi programsal olarak ayarlamaya çalışıyorum. Combo.Items koleksiyonunun dolu olduğunu görmediğim için istenen öğeyi ayarlayamıyorum.


Güncelleme

toplam güncelleme sanırım gereklidir:

  • veri kaynağı uygun
  • uygulanmaktadır 7 ürün combobox bağlı
  • , DisplayMember ve ValueMember içeriyor
  • databound sonra, gui yoluyla, açıkça
  • combobox.DataSource.Count = 7 ve combobox.Items.Count = 0

Yani sorun burada combobox 7 öğeleri görebilirsiniz; databound'dan sonra Combobox'ın ItemCollection öğesinde hiçbir öğe yoktur; Uygun olanı eşleştirmek ve ayarlamak için birini arayamıyorum.

screenshot

+1

"DataTextField" ve "DataValueField" öğesini buna göre ayarladınız mı? –

+0

Veya "DisplayMember" ve "ValueMember". DataSource'da hangi veri türü var? – Mr47

+0

Evet, belki soru tam olarak anlaşılabilir değildir. Databound olayı başarılı bir şekilde çalışıyor, ürünlerimi gui aracılığıyla combo'da görebiliyorum. Sorun, hata ayıklamadır; Veri kaynağı tayininden sonra açılan kutu, Öğeler koleksiyonunda bir şey içermiyor. İşlemeden sonra olduğu gibi, tüm öğeler gösterilir, ancak bundan önce hiçbir şey yoktur. –

cevap

21

BindingSource göreve kadar ddl.BindingContext = new BindingContext(); ekledikten sonra her şey iyi çalıştı İşte

daha iyi anlaşılması için bir resimdir (Ama STH basit kaçırıyorum eminim).

+0

Benim için çalışmıyor ... –

+1

Veri kaynağını kullanırken ilk kez her şey iyi çalışıyor. Veri kaynağını ikinci kez kullandığınız anda bağlayıcı bağlamı yeniden kullanmanız veya yaptığınız gibi yeni bir tane oluşturmanız gerekir. – Norman

1

Hata ayıklayıcıda DataSource öğelerini genişletirseniz, muhtemelen listedeki 1. öğenin sıfır olduğunu fark edersiniz. Bu nedenle DataSource ComboBox Öğelerini oluşturmaz. Listeden boş öğeleri kaldırmak tüm işi yapmalıdır;