Merhaba, Bu yazımda C# List Ögelerini DataGridView ve ListBox’a Bağlamak işlemine bakacağız. Bu konuda bir kaç soru gelince bende ayrı bir ders olarak eklemek istedim.
Bir süredir sitemde yazı yayınlayamıyordum. Hem başka bir sitede yazmaya başlamamdan dolayı hemde işlerimin yoğun ilerlemesinden dolayı bir türlü fırsat bulamadım. List hakkında daha önce yazdığım yazılara aşağıdaki bağlantılardan ulaşabilirsiniz.
C# List Listeler Arasındaki Farkları Bulmak – (Generic List)
List = List<T>
C# List Ögelerini DataGridView ve ListBox’a Bağlamak
Zaman zaman List sınıfı ile çalışırız. Verileri yükleriz ve bir yerlerde göstermek isteriz. Bu yazıda başlıktan da anlayacağınız gibi List içindeki verileri Gridview ve Listbox nesneleri içinde göstermeyi anlatacağım. İlk olarak tek List ile çalışmayı sonrasında birden fazla List ile çalışmayı örnekler ile birlikte açıklayacağım.
Tek List İle Çalışmak
Şimdi bir List oluşturularım verileri alalım.
List<string> lst = new List<string>(); lst.Add("1 - C# Programlama"); lst.Add("2 - C# Eğitim Seti"); lst.Add("3 - C# Dersleri"); lst.Add("4 - C# Nedir?"); lst.Add("5 - C# Örnekleri");
Şimdi elimizde bir List var. Bu List içindeki bir ListBox nesnesine nasıl ekleyeceğimizi görelim.
for (int i = 0; i < lst.Count; i++) { listBox1.Items.Add(lst[i]); }
Yukarıda gördüğünüz gibi List içindeki verileri ListBox nesnesine almak bu kadar kolay.
Gridview‘de göstermek ise biraz daha uğraştırıcı.
//dataGridView1.DataSource = lst; // bu şekilde yaparsak gride gelen bilgi string'in uzunluğu (Lenght) oluyor. DataTable dt = new DataTable(); DataColumn dtcol = new DataColumn("İçerik"); dt.Columns.Add(dtcol); for (int i = 0; i < lst.Count; i++) { dt.Rows.Add(lst[i]); } dataGridView1.DataSource = dt;
Kodlarımıza biraz bakalım.
List listesindeki verileri direk DataSource olarak gösteremiyoruz. DataGridView için bir DataSource gerekli. Bunun içinde DataTable kullanmalıyız. Yukarıda gördüğünüz gibi bir DataTable oluşturuyoruz. Daha sonra bir DataColumn oluşturup bir kolon adı veriyoruz. Bu tanımladığımız veri kolonunu da DataTable ‘a kolon olarak ekliyoruz.
Bu işlemden sonra DataTable veri yüklenmeye hazır hale geliyor. For döngüsü içerisinde, içinde kolon olan DataTable ‘a satırlar olarak List içindeki verileri yüklüyoruz.
Son olarak verilerimizi DataGridView üzerinde gösteriyoruz.
Birden Fazla List İle Çalışmak
Bu örneğin üzerine bir örnek daha göstermek istiyorum. Bu birden fazla listedeki verileri GridView yada ListBox üzerinde göstermek olsun. Yukarıdaki örnekleri aynen kullanacağım.
İki List sınıfını birleştirip tek bir ListBox üzerinde gösterelim.
List<string> lst1 = new List<string>(); lst1.Add("1 - C# Programlama"); lst1.Add("2 - C# Eğitim Seti"); lst1.Add("3 - C# Dersleri"); lst1.Add("4 - C# Nedir?"); lst1.Add("5 - C# Örnekleri"); List<string> lst2 = new List<string>(); lst2.Add("1 - SQL Eğitim Seti"); lst2.Add("2 - SQL Dersleri"); lst2.Add("3 - SQL Nedir?"); lst2.Add("4 - SQL Örnekleri"); lst1.AddRange(lst2); for (int i = 0; i < lst1.Count; i++) { listBox1.Items.Add(lst1[i]); }
List sınıfının AddRange metodu ile iki listeyi birleştirdik ve for döngüsü ile bir ListBox üzerinde gösterdik.
DataTable ile çalışırken ikinci listemizi de DataTable ‘a ikinci kolon olarak ekleyelim.
List<string> lst1 = new List<string>(); lst1.Add("1 - C# Programlama"); lst1.Add("2 - C# Eğitim Seti"); lst1.Add("3 - C# Dersleri"); lst1.Add("4 - C# Nedir?"); lst1.Add("5 - C# Örnekleri"); List<string> lst2 = new List<string>(); lst2.Add("1 - SQL Eğitim Seti"); lst2.Add("2 - SQL Dersleri"); lst2.Add("3 - SQL Nedir?"); lst2.Add("4 - SQL Örnekleri"); DataTable dt = new DataTable(); DataColumn dtcol1 = new DataColumn("İçerik 1"); DataColumn dtcol2 = new DataColumn("İçerik 2"); dt.Columns.Add(dtcol1); dt.Columns.Add(dtcol2); string val1 = "", val2 = ""; for (int i = 0; i < lst1.Count; i++) { try { val1 = lst1[i]; } catch (ArgumentOutOfRangeException) { val1 = ""; } try { val2 = lst2[i]; } catch (ArgumentOutOfRangeException) { val2 = ""; } dt.Rows.Add(val1, val2); } dataGridView1.DataSource = dt;
İki List oluşturduk. DataTable ve DataColumn tanımladık. DataColumn ‘ları DataTable ‘a ekledik. Verilerimizi almak için iki string tanımladık. For döngüsü ile en çok Item’a sahip olan List kadar dönmesini istedik. En çok Item’a sahip olmayanı seçersek eksik veri almış oluruz.
For döngüsüne girildiğinde Try Catch ile verileri almayı denedik. Eğer o index numarasında veri var ise veri alınır yok ise ArgumentOutOfRangeException ‘a düşer.
Burada birden fazla liste üzerinde çalıştığımızdan dolayı List‘ler her zaman aynı Item sayısına sahip olmayabilir. Bu yüzden de kesinlikle hata alırız. Sadece boş bir Try Catch kullanırsak da hata verdiği anda döngü bozulacağından en az Item’a sahip olan List‘in Item sayısı kadar veri alınabilir.
Örneğin bir List ‘te 100 diğerinde 10 tane Item var diyelim. İkinci List ‘te 10. index boş olacağından (indexler 0 dan başlar) ArgumentOutOfRangeException hatası verir ve döngü sonlanır. Bu yüzden DataTable ‘a sadece 10 tane Item eklenmiş olur. İlk List‘teki 90 Item ‘ı alamayız.
Ancak biz Try Catch içinde veriyi almaya çalıştık ve eğer ArgumentOutOfRangeException hatası verirse yani List ‘lerin birindeki Item ‘lar bittiyse geri kalanını boş bırak demiş olduk.
Burada verileri zaten tanımladığımız değişkenelere atamıştık. Aldığımız ve değişkenlere atadığımız verileri de DataTable ‘a satır olarak ekledik. Son olarak da DataTable ‘daki verileri DataGridView‘ de gösterdik.
Bu son örnekler ile istediğiniz kadar List içindeki verileri bir DataTable ‘a yükleyebilir ve DataGridView içerisinde gösterebilirsiniz.
Yazı içindeki bağlantılardan For Döngüsü ve Try Catch hakkında detaylıca yazdığım yazılara ulaşabilirsiniz.
C# List Ögelerini DataGridView ve ListBox’a Bağlamak dersimiz de bu kadar arkadaşlar.
C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.
Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz… Bu dersimde bonusları ile birlikte github projemde yerini almıştır.
Hiçbir yerde bulamayacağınız kaliteli ve çalışan kodlar için Takipte ve Sağlıcakla kalın.