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.
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.
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.
Aynı işlemler ComboBox içinde geçerlidir.
Başarılar dilerim.