Bu yazımda DataView nesnesinden bahsedeceğim.Veritabanından elde ettiğimiz tablonun üzerinde çeşitli işlemler yapmak için kullanılan bir kontroldür.Gelin ufak bir uygulama yapalım ve bu sayede nesneyi izah edeyim.
Öncelikle formumuza birertane TextBox ve DataGridView nesnesi ekleyelim.Forum Load olayında,Northwind veritabanı bağlantısını şimdiden oluşturup Personeller tablosunu DataGridView nesnemizde gösterelim.
Asıl ana mantık şu olacak.TextBox’a girilen değere göre DataGridView içinde belirli bir kolona göre arama işlemi yapılacak ve ona göre veriler filtrelenecektir.Örneğin, TextBox’a “a” yazdığım zaman “a” harfiyle başlayan kayıtlar gözükecek diğerleri gözükmeyecektir.”asd” yazdığım zaman “asd” ile başlayan kayıtlar gözükecek ve diğerleri gözükmeyecektir.Bu sistemi DataView ile yapabiliriz.
DataTable dt; // DataTable global olarak tanımladım.Çünkü TextBox'un TextChanged olayında kullanacağım.
private void Form1_Load(object sender, EventArgs e)
{
SqlConnection baglanti = new SqlConnection("Server=GENÇAY-GENÇAY;database=Northwind;trusted_connection=true;");
SqlDataAdapter dta = new SqlDataAdapter("Select * from Personeller",baglanti);
dt = new DataTable("Personeller");
dta.Fill(dt);
dataGridView1.DataSource = dt;
}
Yukarda veritabanına bağlantı yaptık ve DataGridView nesnesinde verilerimizi listeledik.Şimdi TextBox’un TextChanged olayına gelip aşağıdaki işlemleri yapıyoruz.
DataView dat = new DataView(dt);
//DataView nesnesi(dat) içinde DataTable nesnesinin(dt) bir görüntüsünü(view) oluşturuyoruz.Normalde direkt DataTable nesneleri üzerinde hızlı bir şekilde arama,filtreleme ve sıralama v.s işlemleri yapamayız.DataView nesneleri, kendilerine bağlanan DataTable'ın görüntüsünü oluşturarak,onun üzerinde filtreleme,sıralama ve arama işlemlerini yapmamızı sağlarlar.DataView nesneleri DataBindable(DataSource'lere kaynak olarak bağlanabilen) dir.
dat.RowFilter = "Adi like '" + textBox1.Text + "%'";
//RowFilter : Satırı filtreleme gibi bir anlam ifade eder.Normal where şartı yazar gibi,DataView(dat) içindeki kolona şart yazılıp o şarta uyan kayıtları dat sayesinde gösterilmesi sağlanır.(filtreleme işlemi-arama işlemi)
dataGridView1.DataSource = dat;
//Uyan kayıtlar dat nesnesine geldikten sonra DataSource olarak datı verebiliriz.