C# combobox ile göre ilçe getirme nasıl yapılır?

Katılım
30 Kasım 2018
Mesajlar
5.701
Makaleler
2
Çözümler
14
Merhabalar arkadaşlar C# Windows form application üzerinden 2 tane combobox oluşturdum. İlk combobox içinde iller olacak bu seçilen ile göre ilçeleri gelecek veri tabanı kullanmadan. İlk combobox için gerekli olan illeri kodlar ile ekledim çalışıyor sorun yok ilçeler için komutlarda oluşturdum ama ilçeler gelmiyor nasıl çözebilirim?

C#:
private void Form1_Load(object sender, EventArgs e)
{
DataTable Tablo = new DataTable();
Tablo.Columns.Add("Baslik");
Tablo.Columns.Add("Deger");
for (int i = 0; i < 3; i++)
{
DataRow Satir = Tablo.NewRow();
switch (i)
{
case 0:
Satir["Baslik"] = "Bursa";
Satir["Deger"] = "16";
break;

case 1:
Satir["Baslik"] = "Samsun";
Satir["Deger"] = "55";
break;

case 2:

Satir["Baslik"] = "Sinop";
Satir["Deger"] = "57";
break;
}
Tablo.Rows.Add(Satir);

}

Liste_Il.DisplayMember = "Baslik";
Liste_Il.ValueMember = "Deger";
Liste_Il.DataSource = Tablo;
//MessageBox.Show(Liste_Il.SelectedValue.ToString());

}
private void Liste_Il_SelectedIndexChanged(object sender, EventArgs e)
{
if (Liste_Il.SelectedIndex > 0)
{
MessageBox.Show(Liste_Il.SelectedValue.ToString());
}
}

private void liste_Ilce_SelectedIndexChanged(object sender, EventArgs e)
{
if (liste_Ilce.SelectedIndex > 0)
{
MessageBox.Show(liste_Ilce.SelectedValue.ToString());
}
}
public void Iller(string IlPlaka)
{
DataTable Tablo = new DataTable();
Tablo.Columns.Add("Plaka");
Tablo.Columns.Add("IlceAdi");
int a = 0;
int b = 0;
for (int i = 0; i < 3; i++)
{
DataRow Satir = Tablo.NewRow();
if (IlPlaka == "16")
{
a++;
switch (i)
{

case 0:
Satir["Plaka"] = IlPlaka;
Satir["IlceAd"] = "Gemlik";
break;

case 1:
Satir["Plaka"] = IlPlaka;
Satir["IlceAd"] = "Kestel";
break;

case 2:
Satir["Plaka"] = IlPlaka;
Satir["IlceAd"] = "Orhangazi";
break;

case 3:
Satir["Plaka"] = IlPlaka;
Satir["IlceAd"] = "Osmangazi";
break;
}
}
if (IlPlaka == "55")
{
a++;
switch (i)
{
case 0:
Satir["Plaka"] = IlPlaka;
Satir["IlceAd"] = "Bafra";
break;

case 1:
Satir["Plaka"] = IlPlaka;
Satir["IlceAd"] = "İlkadım";
break;

case 2:
Satir["Plaka"] = IlPlaka;
Satir["IlceAd"] = "Atakum";
break;

case 3:
Satir["Plaka"] = IlPlaka;
Satir["IlceAd"] = "Terme";
break;
}

}
if (IlPlaka == "57")
{
a++;
switch (i)
{
case 0:
Satir["Plaka"] = IlPlaka;
Satir["IlceAd"] = "Gerze";
break;

case 1:
Satir["Plaka"] = IlPlaka;
Satir["IlceAd"] = "Ayancık";
break;

case 2:
Satir["Plaka"] = IlPlaka;
Satir["IlceAd"] = "Erfelek";
break;

case 3:
Satir["Plaka"] = IlPlaka;
Satir["IlceAd"] = "Dikmen";
break;

}

}

}
}
}
}
 
Aslına bakarsanız bu tür durumlar için "HashMap" denen veri yapıları kullanılıyor ama siz kolaya kaçıp biraz kod hamallığı yaparak seçilen ilden sonra combobox'ı aktif edip ilgili ilin ilçelerini switch case ya da if else üzerinden listeye append etmeyi deneyebilirsiniz
 
Aslına bakarsanız şöyle bir yaklaşım HashMap'ten daha kolay olabilir. ilk önce bütün illeri bir listeye koyun sonra o illerin ilçeleri için tek tek ayrı listeler oluşturun ama listelerin referansları illere göre olsun. Daha sonra büyük bir switch case ya da if/else if/else döngüsüne alın. yani en üstteki combobox.getSelectedItem tarzı bir fonksiyona göre ilçeleri ilçelerin listeleneceği combobox'a yönlendirin. Bu işlemler dinamik olacağı için iş bittikten sonra combobox'ın içindeki elemanları da boşaltın. Kusura bakmayın olmayan C# bilgimle tavsiye vermeyi denedim. Umarım mantıklı gelmiştir.
 
Aslına bakarsanız şöyle bir yaklaşım Hashmap'ten daha kolay olabilir. İlk önce bütün illeri bir listeye koyun sonra o illerin ilçeleri için tek tek ayrı listeler oluşturun ama listelerin referansları illere göre olsun. Daha sonra büyük bir Switch case ya da if/else if/else döngüsüne alın. Yani en üstteki combobox. Getselectedıtem tarzı bir fonksiyona göre ilçeleri ilçelerin listeleneceği Combobox'a yönlendirin. Bu işlemler dinamik olacağı için iş bittikten sonra Combobox'ın içindeki elemanları da boşaltın. Kusura bakmayın olmayan C# bilgimle tavsiye vermeyi denedim. Umarım mantıklı gelmiştir.

Yok hocam estağfurullah C# dilinde pek başarılı değilim bende tavsiye almak isterim.
 
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı