Combobox listview ilişkisi

Windows formda Combobox kontrolü ve akabinde listviewe seçilene göre veritabanından çekilen veriyi göstermek istemişizdir. Basit bir combobox listview ilişkisi olan bir uygulama ile konuyu öğrenelim.

Öncelikle verileri veritabanından çekeceğimiz için combobox listview ilişkisinin ortamını uygun tablolarla ayarlayalım. Senaryomuz gereği iki tablo oluşturalım. İlk tablo kişiler tablosu olsun. İçeriği; adi, soyadi, takimi(tipi int). Diğer tablo combobox da gözükecek olan takımlar tablosu olsun. İçeriği; id, takimadı(nvarchar tipli) oluşturup. Kişiler tablosundaki takimi kolonu ile Takımlar tablosundaki id yiz resimdeki gibi ilişkilendirin. İlişkilendirme yaptıktan sonra takımları girin ve kişilerle birlikte takım numaralarını resimdeki gibi girin.

iliskilendirme

kisiler-takimlar-tablosu

Veritabanı tarafını bitirdikten sonra form kısmına geçebiliriz. Forma resimdeki gibi combobox ve listview ekleyip form load olayına veritabanından takımlar tabolsundaki takım isimlerini combobox kontrolüne çekelim;

listview-combobox-kontrolu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
  SqlConnection sql = new SqlConnection("server=.; database=coder; trusted_connection=true;");
        private void Form1_Load(object sender, EventArgs e)
        {
           
            SqlCommand cmd = new SqlCommand("Select takimAdi from tblTakimlar", sql);
            sql.Open();
            SqlDataReader rdr = cmd.ExecuteReader();

            while (rdr.Read())
            {
                comboBox1.Items.Add(rdr[0]);
            }
            sql.Close();
        }

Seçilen takımdaki kişileri gösterebilmek için listview kontrolüne veritabanından iki tabloyu sql join komut ile birleştirerek ilgili kategori detayını kontrolde göstermek için combobox SelectedIndexChanged olayına aşağıdaki kodları yazalım;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            listView1.Items.Clear();

            SqlCommand doldur = new SqlCommand("select  adi, soyadi, takimAdi from tblKisiler td join tblTakimlar tk on td.takimi=tk.id where takimi='" + (comboBox1.SelectedIndex + 1).ToString() + "'", sql);
            sql.Open();
            SqlDataReader rdr = doldur.ExecuteReader();
            while (rdr.Read())
            {
                ListViewItem li = new ListViewItem();
                li.Text = rdr["adi"].ToString();
               
                li.SubItems.Add(rdr["soyadi"].ToString());
                li.SubItems.Add(rdr["takimAdi"].ToString());


                listView1.Items.Add(li);
            }

            sql.Close();
        }