Personel Kayıt Uygulaması Bölüm 3 Combobox’a Verileri Çekme

Personel Kayıt Uygulaması Bölüm 3 Combobox’a Verileri Çekme yazımıza devam etmeden önce bir önceki yazıyı gözden geçiriniz. Bunun için aşağıdkai linki kullanabilirsiniz. Eğer bitirdi iseniz devam edebilirsiniz.

Uygulamamda AnaSayfa tasarımda İl bilgisinin girileceği bir adet combobox kullanıyorum. Bu comboxa dışarıdan veri girişini engellemek istediğim için sadece seçme imkanı ile veri girişini sağlayacağım. Öncelikle comboboxın DropDownStyle özelliğini DropDownList yapıyorum. İçeriğine yazı yazılmasın, sadece liste olsun.

SQL tarafına dönüyorum. Şimdi benim amacım listeleri bir veritabanı tablosundan combobox içine çekmek. Bunun için yeni bir tablo oluşturmam gerekiyor. Bu tabloda İl bilgileri yer alacak. Buradaki il isimlerini ben comboboxa çekeceğim. 81 tane il isminden oluşan bir tablo gerekiyor. İsterseniz yeni bir tablo oluşturup illeri sıra ile girebilirsiniz. Ama ben scriptim var onu kullanacağım. Sizde aşağıdaki yazıdan bu scripti elde edebilirsiniz.

Burada kod kısmında yer alan her şeyi, sqlde yeni bir query açarak, tabi bu projeye adit veritabanı üzerinde çalışırken kopyalayıp çalıştırın. Otomatik olarak iller tablonuz oluşacaktır. Burada ID bilgisi de var biz onu kullanmayacağız. Script çalıştıktan sonra tablonuz gelmiş olacak. Vertabanınızı refresh edin.

Personel Kayıt Uygulaması Bölüm 3 Combobox’a Verileri Çekme
Comboboxa Veritabanından Veri Çekme

Şimdi Visual studio tarafına dönüyorum. AnaSayfa.cs formun Load olayında aşağıdaki işlemleri sırası ile yapıyorum:

Öncelikle kütüphane bölümünde System.Data.SqlClient kütüphanemi ekledim. Bunu ekliyorum ki, SQL komutlarını kullanabileyim.

Akabinde global alanda sql bağlantı nesnemi oluşturdum.

SqlConnection conn = new SqlConnection("Data Source=DESKTOP-FIUL2TU\\SQLEXPRESS;Initial Catalog=PersonelBilgi;Integrated Security=True");

Şimdi Combobox’a illeri sql’den geçekebilmek için gerekli metodumu oluşturuyorum. Global alanda aşağıdaki metodumu yazdım.

void cmbDoldur()
        {
            conn.Open();

            SqlCommand doldur = new SqlCommand("SELECT sehir FROM iller",conn);
            SqlDataReader dr = doldur.ExecuteReader();
            while (dr.Read())
            {
                cmbSehir.Items.Add(dr[0]);
            }


            conn.Close();
        }

Bu metotta bağlantı nesnemi açıyorum öncelikle, SQL Command sınıfından yeni bir nesne türettim, adını doldur verdim. İller tablosunda tüm sehir kolonlarımı seçiyorum. SQL Data Reader ile oluşturduğum dr nesnesi ile okuma işlemine başlıyorum. Veri geldikçe okumaya devam ediyor ve her gelen veriyi comboboxa ekliyorum. Akabinde bağlantımı kapatıyorum. Daha sonra Form Load olayında aşağıdaki kodları yazıyorum.

private void Form1_Load(object sender, EventArgs e)
        {
            cmbDoldur();           

        }

Ve sonuç aşağıdaki gibi;

Personel Kayıt Uygulaması Bölüm 3 Combobox’a Verileri Çekme

Bu arada üstteki görselde görüleceği üzere Personel ID karşısında yer alan textboxa ben kullanıcının veri yazmasını istemiyorum. Dolayısı ile bu kontrolüm seçili iken (txtID) enabled özelliğini false yapıyorum. Ben silme, güncelleme işlemi yaparken kullanıcı datagridview üzerine çift tıkladığında verilerin kontrollere aktarılmasını sağlayacağım. Oraya ancak ID bilgisi gelsin istiyorum. Yani kullanıcı datagridview üzerinde çift tıklamadan, bilgiler bu kontrollere gelemeyecek ve silme, güncelleme işlemi yapamayacak. Kaydetme işleminde de bu kısım pasif kalsın ki, oraya boşuna veri girişi yapılmakla uğraşılmasın. Çünkü ben Personel tablosu için otomatik artan ID değeri verdim.

Şimdilik bu kadar 😊

1 Yorum

  1. Merhaba;
    Combobox ın alabileceği eleman sayısında bir sınır var mı acaba? Rent a car programı yapıyorum ve müşterileri
    veritabanından comboboxa çekiyorum. Yaklaşık 2000 adet müşteri var. Diğer sorumda acaba comboboxta filtreleme yapmamızın bi yöntemi var mı? Mesela comboboxtaki o 2000 müşterimden herhangi birine rahatça ulaşmak istiyorum gibi gibi. Yanıtlar için şimdiden teşekkürler.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir