ADO.NET – DataView Nesnesi
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.

asp.net de bu islemi yaptigimda neden kolon adi bulunamadi hatasi aliyorumacaba isin icinden cikamadim
Demek ki olmayan bir kolon üzerinde çalışmaya “çalışıyorsun”.
DataTable dt;
SqlConnection baglanti = new SqlConnection(“Server=LENOVO-PC\\SQLEXPRESS2016;Database=VERITABANIM;Uid=SA;Password=1907”);
protected void Button1_Click(object sender, EventArgs e)
{
SqlDataAdapter dta = new SqlDataAdapter(“Select * from TABLO1 where TARIH=’2015.06.18′”, baglanti);
dt = new DataTable(“TABLO1”);
dta.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
}
protected void Button2_Click(object sender, EventArgs e)
{
GridView1.DataSource = dt;
DataView dat = new DataView(dt);
dat.RowFilter = “ABONE LIKE ‘Y*'”;
GridView1.DataSource = dat;
GridView1.DataBind();
}
KULLANDIGIM SATIRLAR BİRE BİR TABLOM GELİYOR.FAKAT İÇİNDE Y İLE BASLAYANYADA FARKLI BİR DURUM ARATTIGIMDA BOŞ GELİYOR.WEBFORM KULLANIORUM SAYFA YENİLENDİĞİ İÇİN BİR PROBLEM YARATIYOR OLABİLİRMİ
Bildiğim kadarıyla DataView’in fıtratı Windows Form’a göre tasarlanmıştır.Bu işlemi WebForm’da daha uygun yapılarla yapmaya çalışınız.
wındows form uygulamalarında denedim evet gerçekten çalısıyor ama asp.net webformda neden sıkıntı yapıyor olabilir
tesekkurler