ComboBox ve ListBox DataSource Doldurma


6 Ekim 2012 Hikmet Okumuş C#

ComboBox ve ListBox' ın Items koleksiyonu ile kontrollerin içerisine değer ekleyebilmekteyiz. Bunun haricinde datatable ya da list bir objeyi datasource' ına setlemek isteyebiliriz. Setleme işlemi haricinde bilmemiz gereken 2 özellik bulunmaktadır. DisplayMember ve ValueMember.
Öncelikle database' den verilerimizi çekelim ve datatable ile ListBox' ın DataSource özelliğine setleyelim. Sorgumuz aşağıdaki gibidir.
SELECT Ids, Adi, Soyadi FROM Kullanicilar
        private void button1_Click(object sender, EventArgs e)
        {
            listBox1.DataSource = KullaniciDoldur();
        }
KullaniciDoldur() fonksiyonu ile verilerimiz getirdik ve ListBox içerisine setledik. ListBox' ın görüntüsü aşağıdaki gibi olacaktır.
www.hikmetokumus.com
Resimde de görüldü gibi satırlar DataRowView olarak görüntülenmektedir. Çünkü biz datatable' ı atama yaparken ListBox' ın hangi alanı göstereceğini belirtmedik. Bu işlem DisplayMember özelliği ile yapılmaktadır.
        private void button1_Click(object sender, EventArgs e)
        {
            listBox1.DataSource = KullaniciDoldur();
            listBox1.DisplayMember = "Adi";
        }
Bu şekilde ListBox içerisinde Adi alanında bulunan veriler listelenecektir.
www.hikmetokumus.com
DisplayMember ile ListBox içerisinde gözükecek olan alan bilgisini belirtiyoruz. ValueMember ilede seçilen satırın arka planda hangi değeri tutacağı belirtilmektedir. Örnek olarak seçilen kullanıcının Id bilgisini öğrenmek istersek ValueMember özelliğine Ids' i setlemek yeterlidir.
        private void button1_Click(object sender, EventArgs e)
        {
            listBox1.DataSource = KullaniciDoldur();
            listBox1.DisplayMember = "Adi";
            listBox1.ValueMember = "Ids";
        }
Bu şekilde seçilen kullanıcının Id bilgisini SelectedValue özelliği ile öğrenebiliriz.
www.hikmetokumus.com
Aynı işlemler ComboBox içinde geçerlidir.

Başarılar dilerim.



Kullanıcı Yorumları

hikmet okumuş makale yorum
Serdar Karaca
12/18/2013 11:58:21 AM

KullaniciDoldur() fonksiyonunu vermemişsiniz...

hikmet okumuş makale yorum
Hikmet Okumuş
12/18/2013 12:13:06 PM

Selamlar,

Dediğiniz gibi KullaniciDoldur() metodunu eklememişim. Basit mantıkta geriye DataTable döndüren bir metod. Sorgu olarak makale başında belirtilen cümleyi kullanmaktadır.

public DataTable KullaniciDoldur()
{
SqlConnection con = new SqlConnection(Baglanti);
SqlCommand cmd = new SqlCommand(con, Sorgu);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);

return dt;
}

hikmet okumuş makale yorum
ercan ilbars
3/16/2014 7:33:06 PM

Arkadaslar acil yardım lazım vb.net de sql baglantılı listboxı textboxdan search yaptırmak istiyorm
bu aşagıdaki kod datasource olmadan yapılıyor bunu datasource varken nasıl yapabılırm ?
dim items() as string ={"a","b"}

ListBox1.Items.Clear()
ListBox1.Items.AddRange(items.Where(Function(s) s Like TextBox1.Text & "*").ToArray)

hikmet okumuş makale yorum
Hikmet Okumuş
3/19/2014 10:52:51 AM

Selamlar ercanilbars,

Linq ya da Lambda kullanarak sorgulama yaparsanız sorgulama yaptığınız veri kümesi üzerinden sonuç dönecektir. Siz TextBox içerisinde girmiş olduğunuz değeri database üzerinde aramasını istiyorsanız öncelikle database üzerinden Select çekmeniz gerekmektedir. Sonrasında dönen sonuç kümesini ListBox üzerinde gösterebilirsiniz.



Yorum Ekle