Merhaba arkadaşlar, C# DevExpress CheckedListBoxControl Veri Alma Sorunu dersi ile tarihin tozlu raflarından gelen derslere devam ediyorum. :D Bu dersimizde DevExpress ‘e ait olan CheckedListBoxControl’e yüklediğimiz verilerden, işaretlediklerimizi alamama sorununa değineceğim.
C# DevExpress CheckedListBoxControl Veri Alma Sorunu
Bu sorunun asıl kaynağı C# DevExpress CheckedListBoxControl veri yükleme işleminden kaynaklanıyor. Verileri yükleme şeklimizi klasik yöntem ile yaparsak işaretlenmiş verilerin Checked durumuna ulaşamıyoruz. Sorunun sebebini, eklenen verileri CheckedListBoxControl ‘e ait bir item olarak görmediği için alamadığını düşünüyorum.
Klasik yükleme şeklimiz şöyle oluyor.
DataTable dt = new DataTable(); // datat table doldurma işlemleri clb_ait_oldugu_kategoriler.DataSource = dt; clb_ait_oldugu_kategoriler.DisplayMember = "Kat_Adi"; clb_ait_oldugu_kategoriler.ValueMember = "Kat_Kodu";
Bu şekilde yapılan yüklemelerde ( CheckedListBoxControl data bind ) işaretlenen verileri alamıyoruz. Bu durumda yükleme işlemini bir döngü aracılığı ile yaparsak;
for (int i = 0; i < dt.Rows.Count; i++) { clb_ait_oldugu_kategoriler.Items.Add(dt.Rows["Kat_Adi"].ToString()); }
İşaretlenen verileri almakta bir sorun yaşamıyoruz.
Burada, yukarıda bahsettiğim gibi databind yaptığımızda verilerin sadece görüntü olarak orada olduğunu düşünüyorum. CheckedListBoxControl ‘un bir item nesnesi olmadığı için verilerin işaretlenme durumunu algılayamıyor.
Sorunun kaynağını düzelttikten sonra aşağıdaki yöntem ile rahatla işaretlenen verileri alabiliyoruz.
string kategoriler =""; foreach (CheckedListBoxItem item in clb_ait_oldugu_kategoriler.Items) { if (item.CheckState == CheckState.Checked) kategoriler += item + ","; }
Dikkat ettiyseniz buradaki sorunumuz aslında işaretlenen verileri alamamaktır. Ancak bu soruna sebep olan şey ise bambaşka bir durum. Bu gibi şeylere çok fazla rastlıyoruz. Bu sebeple karşımıza çıkan bir hatayı düşünmeden çözüm üretmeye kalkmak bize sorun olacaktır. Örneğin burada hemen CheckedListBoxControl ‘ü silip başka bir nesne de kullanabilirdik. Ancak bu yaptığımız tasarımımızı değiştirmemize neden olacak bir durumdur ve belki de hiç içimize sinmeyecek bir bir görüntüye sebep olacaktır.
Bu yazımızında sonuna geldik dostlar.
C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.
Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…
Sağlıcakla ve takipte kalın.