2009-01-07 11 views
5

KVPList'in bir IList (KeyValuePair olması durumunda) olduğu gibi aşağıdaki gibi bir ComboBox kurulumuna sahibim:Bir ComboBox'ı bir IList'e ve SelectedValue kullanarak bağlama

comboBox.DisplayMember = "Value"; 
comboBox.ValueMember = "Key"; 
comboBox.DataSource = KVPList; 

Daha sonra SelectedValue ile bir BindingSource (DataSet'ye) bağlayan bir bağ kurdum. Hangi nedenle olursa olsun, formu görüntülendiğinde açılan kutu her zaman boş olur. Ancak doğru şekilde doldurulur (IList değerleri iyi görünür ve seçilebilir).

Şimdi, izleme için elimden gelenin en iyisini denedim ve başlangıçta SelectedValue'u bağlıyken doğru şekilde ayarlamış gibi görünüyor, ancak daha sonra bir şekilde null'e sıfırlanır. Ben de sipariş edilen şeylerle oynadım, boşuna.

Bu konuda biraz ışık tutabilir veya bir geçici çözüm önerebilir mi?

Kayıt için, aynı formda, aynı BindingSource'ye sahip SelectedValue ile aynı formda başka bir ComboBox var. Xzx28 bir DataSet değil, bir IList değil ve bir çekicilik gibi çalışır. Xzx32'den DataTable yapmak için bir seçenek olabilir, ancak fazladan bir ek yük gibi görünüyor; Bir numaralandırmadan IList'ü üretiyorum.

cevap

7

Ouch. Temelde yarım gün sonra bunu boşa harcadım, anladım. Benim üzerimde tamamen bir hataydı.

KVPList bir IListshort,string>KeyValuePair< arasında ayarlanır, ancak veri alan türü int ait edildi. Temel olarak, veri bağlama tetiklenir ve SelectedValue özelliğini ayarlar. Sonra DisplayMember ve ValueMember bağlayıcıları yeniden SelectedValue denetleniyor. ValueMember, int numaralı short türünde olduğundan, bir eşleşme bulamaz ve bu nedenle boş değere ayarlamaz.

Boks ve kutucuklarla komik bir şey olmalı, ama şu an nedenini anlamaktan çok yoruldum.

Başka birinin aynı sorunla karşılaşması durumunda bu sorudan çıkacağım. İzlemesi zor, çünkü ya bir istisna atmaya ya da atmaya çalışacağım, sessizce boş yere gitmeyi beklemem. Sonuçta, short ve int her ikisi de değer türleridir ve son kontrol ettim (int)10 == (short)10 doğrudur.

+0

Cevabınız için teşekkür ederiz. Ben de aynı problemle karşılaştım. Bağımlılık özelliği, bir ILIst numaralı bağlama bağlayan IList idi. (Foo IFoo uygular). Her şey bağımlılık özelliği değeri dışında çalışan görünüyordu her zaman boş. İstisnalar veya hata ayıklama çıkışı yok. Bağımlılık özelliği türünü IList olarak değiştirdiğimde her şey çalışmaya başladı. –

İlgili konular