Forum

Windows Form da Bir...
 
Bildirimler
Hepsini Temizle

Windows Form da Birbirine Bağlı Combobox dan Veri Getirme

13 Yazılar
3 Üyeler
0 Reactions
5,278 Görüntüleme
(@mehmetugur)
Gönderiler: 275
Reputable Member
Konu başlatıcı
 

Merhaba 2 adet Combobox'ım bulunmakta. Yapmak istediğimi bir örnekle anlatmak istersem; ilgili araba modeli birinci combobox dan seçilip ikinci combobox da ilgili markanın modelini getirmek. Örneğin: Audi => A3,A4 Ford => Focus,Mondeo gibi.

Kodlarımı ;Comboboxın  _SelectedIndexChanged olayına yazdım fakat bir üstdeki ID yi yakalayamıyorum. (Anladığım kadarı ile)
Şuanki durumum: Page_Load olayında birinci combobox'ı dolduruyorum, ikinci comboboxda seçip yapmak istediğim  de ID yi alan kısımda şu hatayı veriyor:

   int birimturuID = Convert.ToInt32(cbBirimTurleri.SelectedValue);

 'System.Data.DataRowView' türündeki nesne 'System.IConvertible' türüne atılamadı.

 Sizce çözüm önerisi ne olabilir? 

 
Gönderildi : 02/12/2014 19:10

(@eravse)
Gönderiler: 1753
Üye
 

Databind esnasında display field ve value filed ozellıklerını doldurursanız hata vermiyecektir

  

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 02/12/2014 19:19

(@eravse)
Gönderiler: 1753
Üye
 

Yani şu şekilde

List<Country> countries = new List<Country> { new Country("UK"), 
                                     new Country("Australia"), 
                                     new Country("France") };

bindingSource1.DataSource = countries;

comboBox1.DataSource = bindingSource1.DataSource;

comboBox1.DisplayMember = "Name"; 

comboBox1.ValueMember = "Name"; 

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 02/12/2014 19:21

(@mehmetugur)
Gönderiler: 275
Reputable Member
Konu başlatıcı
 

İlk
olarak cevap için teşekkür ederim. Veriler; veritabanından dataset yapısı ile
combobox'lara doldurulmakta. Sizin bahsettiğiniz şekilde yaptım fakat bir
üsttedki comboboxdan gelen 
ValueMember ı
alamıyor. Page load ve Combobox'ın SelectedChange özelliğine durma noktası
koydum. Bunun sonucu page load daki alanların ValueMember ve DisplayMember ları geliyor fakat combobox dan seçim yapınca bu alanlar
boş beliyor. Bunun sonucunda da bir önceki mesajımda ki hatayı fırlatıyor.

 

Benim anladığım kadarı ile Web
form uygulamarı DropDownList de bulunan AutoPostBack gibi işlemle birinci
combobox olayında refresh yaptırmak lazım. Üç gündür uğraşıyorum ama bunu
 combobox da bir türlü yaptıramadım.

 

(Not: Combobox ların SelectedChange olayı
değilde _Click olayında kodlarımı çağırdığımda sıkıntısız işliyor. Fakat click
de bir önceki combobox ları click olayı olduğu için geç algılıyor. Yani büyük
bi ihtimalle click de refresh'e benzer olay gerçekleştiği için onda sıkıntı
yaşatmıyor ) 

 

 

 
Gönderildi : 03/12/2014 13:31

(@eravse)
Gönderiler: 1753
Üye
 

value memberı almamasının nedeni şudur muhtemelen post back yaptığınız için combo resetleniyordur. combolarını doldurdugunuz yere şu şekilde bir kod uygulayınız 

if(!Page.IsPostBack)

{

combo database kodları....

..... 

 

bunu page loadda yapmanız yada datayı load ettiğiniz yerde yapmanız gerekmektedir. 

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 03/12/2014 13:41

(@mehmetugur)
Gönderiler: 275
Reputable Member
Konu başlatıcı
 
Page_Load olayı 
    DataSet dsBirimTurleri = new DataSet();
            birimKural.BirimTurleriGetir(dsBirimTurleri);
            cbBirimTurleri.DataSource = dsBirimTurleri.Tables[0];
            cbBirimTurleri.ValueMember = "BirimTurID";
            cbBirimTurleri.DisplayMember = "BirimTuruAdi";
 
bBirimTurleri_SelectedIndexChanged Olayı
    int birimturuID = Convert.ToInt32(cbBirimTurleri.SelectedValue); 
 
      DataSet dsbirimler = new DataSet();
            birimkural.BirimleriGetir(dsbirimler, birimturuID);
 
            cbBirim.DataSource = dsbirimler.Tables[0];
            cbBirim.ValueMember = "BirimTurID";
            cbBirim.DisplayMember = "BirimAdi";
 
Gönderildi : 03/12/2014 13:42

(@mehmetugur)
Gönderiler: 275
Reputable Member
Konu başlatıcı
 

value memberı almamasının nedeni şudur muhtemelen post back yaptığınız için combo resetleniyordur. combolarını doldurdugunuz yere şu şekilde bir kod uygulayınız 

if(!Page.IsPostBack)

{

combo database kodları....

..... 

 

bunu page loadda yapmanız yada datayı load ettiğiniz yerde yapmanız gerekmektedir. 

 

Aynen benim de yapmak istediğim bu. Fakat Windows form da PostBack ya başka isimde geçiyor yada yada çağrılma fonksiyonu farklı. Bahsettiğiniz şekilde load olayına o tarz kod yazmaya izin vermiyor.

 
Gönderildi : 03/12/2014 13:52

(@eravse)
Gönderiler: 1753
Üye
 

hocam sen bir team viewer ayarlarmısın öğlen bakalım 

 

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 03/12/2014 15:02

Hakan Uzuner
(@hakanuzuner)
Gönderiler: 33292
Illustrious Member Yönetici
 

hocam sen bir team viewer ayarlarmısın öğlen bakalım 

 

Forum kurallarına göre bu yasak ama 🙁 

Danışman - ITSTACK Bilgi Sistemleri
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************

 
Gönderildi : 03/12/2014 16:03

(@eravse)
Gönderiler: 1753
Üye
 

Hocam sen bir team ayarlama 🙂 Pardon hakan hocam. 

 

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 03/12/2014 16:24

(@eravse)
Gönderiler: 1753
Üye
 

mehmet bey, 

Şu makaleyi incelermisiniz

http://msdn.microsoft.com/tr-tr/library/system.windows.forms.combobox.selectedindexchanged(v=vs.110).aspx konu ile alakalı sorununuzu çözecektir.

 

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 03/12/2014 16:28

(@mehmetugur)
Gönderiler: 275
Reputable Member
Konu başlatıcı
 

mehmet bey, 

Şu makaleyi incelermisiniz

http://msdn.microsoft.com/tr-tr/library/system.windows.forms.combobox.selectedindexchanged(v=vs.110).aspx konu ile alakalı sorununuzu çözecektir.

 

 

Hocam ilginiz için tekrar teşekkür ederim. Sorunu çözdüm, biraz mantık dışı ama kod sağlıklı çalışıyor. Çözüm yolum: combobox dan gelen değeri bir Int değişkenine atıp öyle kullanıyordum daha sonra değişken tanımladığım yeri silip, combobox'ı çağıracağım yerde Convert ederek kullandım. Sorun çözüldü

 
Gönderildi : 04/12/2014 01:34

(@eravse)
Gönderiler: 1753
Üye
 

🙂 süper çalışıyorsa ve stabilse düzgündür 🙂 kolay gelsin.

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 04/12/2014 01:35

Paylaş: