Bu yazımızda C# Windows Form‘ da Class ve List kullanımı ve List<> öğesinin DatagridView kontrolüne nasıl bağlanabileceğini gösteren bir proje oluşturacağız. Ayrıca List içindeki kayıtları OrderBy kullanarak istenilen bir alana göre alfabetik olarak sıralama yaptıracağız.
Öncelikle projemizi aşağıdaki gibi oluşturuyoruz.
Daha sonra Class yapımızı oluşturmak için Solution Explorer penceresinde projemiz üzerinde sağ tıklayarak sırasıyla Add – Class seçeneğini tıklıyoruz. Örneğimizde Class’ ımıza “Kisi.cs” ismin verdik.
Kisi Class’ ını oluşturuyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace list_siralama { class Kisi { public string Ad { get; set; } public string Soyad { get; set; } public string Bolum { get; set; } public string Sehir { get; set; } } } |
Örneğimizde Personele ait Ad,Soyad,Bolum ve Sehir bilgisini saklayacağımız için Sınıfımızı buna göre oluşturmuş olduk.
Şimdi Form tarafına geçiyoruz. Liste oluşturarak kodla veri girişi yapacağız. Öncelikle public olarak
1 2 3 |
List<Kisi> persons; |
oluşturuyoruz.
Getir Butonu için aşağıdaki kodları yazarak listemize değerler veriyoruz ve Datagridview‘ e bağlantısını gerçekleştiriyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
private void button1_Click(object sender, EventArgs e) { persons = new List<Kisi>(); persons.Add(new Kisi() { Ad = "Ahmet", Soyad = "Cansever",Bolum="İdari İşler",Sehir="İstanbul" }); persons.Add(new Kisi() { Ad = "Mehmet", Soyad = "Sayın", Bolum = "Bilgi İşlem", Sehir = "Afyon" }); persons.Add(new Kisi() { Ad = "Sami", Soyad = "Öztürk", Bolum = "Satın Alma", Sehir = "Konya" }); persons.Add(new Kisi() { Ad = "Rıfat", Soyad = "Seven", Bolum = "Satın Alma", Sehir = "Adana" }); persons.Add(new Kisi() { Ad = "Burak", Soyad = "Saygın", Bolum = "Muhasebe", Sehir = "Rize" }); persons.Add(new Kisi() { Ad = "Kemal", Soyad = "Işık", Bolum = "İnsan Kaynakları", Sehir = "Bilecik" }); persons.Add(new Kisi() { Ad = "Cemil", Soyad = "Kırmızı", Bolum = "Bilgi İşlem", Sehir = "Sakarya" }); dataGridView1.DataSource = persons; } |
Böylelikle List öğesi içindeki kayıtların DatagridView içinde listelenmesini sağlamış olduk. Şimdi de List içindeki kayıtların nasıl sıralanabileceğine bakalım. Bunun için “İsme Göre Sırala” butonunu kullanacağız.
1 2 3 4 5 6 7 |
private void button2_Click(object sender, EventArgs e) { var kisiler = persons.OrderBy(person => person.Ad).ToList(); dataGridView1.DataSource = kisiler; } |
Kodlarımızın tamamı aşağıdaki şekilde olacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace list_siralama { public partial class Form1 : Form { public Form1() { InitializeComponent(); } List<Kisi> persons; private void button1_Click(object sender, EventArgs e) { persons = new List<Kisi>(); persons.Add(new Kisi() { Ad = "Ahmet", Soyad = "Cansever",Bolum="İdari İşler",Sehir="İstanbul" }); persons.Add(new Kisi() { Ad = "Mehmet", Soyad = "Sayın", Bolum = "Bilgi İşlem", Sehir = "Afyon" }); persons.Add(new Kisi() { Ad = "Sami", Soyad = "Öztürk", Bolum = "Satın Alma", Sehir = "Konya" }); persons.Add(new Kisi() { Ad = "Rıfat", Soyad = "Seven", Bolum = "Satın Alma", Sehir = "Adana" }); persons.Add(new Kisi() { Ad = "Burak", Soyad = "Saygın", Bolum = "Muhasebe", Sehir = "Rize" }); persons.Add(new Kisi() { Ad = "Kemal", Soyad = "Işık", Bolum = "İnsan Kaynakları", Sehir = "Bilecik" }); persons.Add(new Kisi() { Ad = "Cemil", Soyad = "Kırmızı", Bolum = "Bilgi İşlem", Sehir = "Sakarya" }); dataGridView1.DataSource = persons; } private void button2_Click(object sender, EventArgs e) { var kisiler = persons.OrderBy(person => person.Ad).ToList(); dataGridView1.DataSource = kisiler; } } } |
Şimdi programımızı çalıştıralım.
Bu sıralamayı DataGridWiev de Acces veritabanından alınan veriletr için yapılmasını bir türlü bulamadım. Onun kodlarını da yazabilirmisiniz.
Urun numarasını küçükten büyüğe veya urun adını alfabetik sıralamaya göre mesela
sql sorgusunda ORDER BY yan cümlesini kullanarak sıralama yapabilirsin. Örneğin;
SELECT * FROM musteri ORDER BY ad şeklinde kayıtları çektiğinde ad alanına göre a-z sıralanmış şekilde kayıtlar gelecektir.
Daha fazla bilgi için aşağıdaki linkleri inceleyebilirsin.
https://www.yazilimkodlama.com/sql-server-2/sql-sorgulari-ve-ornekleri/
https://www.yazilimkodlama.com/sql-server-2/sql-calisma-sorulari/
https://www.yazilimkodlama.com/sql-server-2/sql-server-order-by-kullanimi/
Yeni bir kişi eklediğimde Grid’e yansımıyor maalesef… Öneriniz nedir. Bağlama (bind) işe yarabilir ama onda da başarılı olamadım.