Bu yazımızda DataView sınıfını kullanarak belirli kriterlere göre veri filtreleme, arama işlemlerini nasıl yapabileceğimizi gösteren ufak bir örnek yapacağız. Örneğimizde daha önceden bağlantısı kurulmuş bir veritabanı örneğinde “like” kullanarak arama yapacağız.
DataView sınıfının RowFilter özelliği Sql sorgularındaki “where” gibi çalışır. DataView kullanmanın avantajı performanslı ve hızlı olmasıdır. DataView nesnesi kullanılabilmek için mutlaka bir DataTable ya da Dataset nesnesine ihtiyaç duyulur.
Kullanımına gelecek olursak; Öncelikle veritabanı bağlantıları yapılmış olan formumuzda arama yapmak için kullanılmak üzere textBox kontrolümüzü ekliyoruz. textBox kontrolünün TextChanged özelliğine;
1 2 3 4 5 6 7 8 9 | private void textBox5_TextChanged(object sender, EventArgs e) { DataView dv = ds.Tables[0].DefaultView; dv.RowFilter = "Ad Like '"+textBox5.Text+"%'"; //dv.RowFilter = string.Format("Ad LIKE '{0}%'", textBox5.Text); dataGridView1.DataSource = dv; } |
kodlarını ekliyoruz. Burada textbox5′ e girilen karaktere göre datagridview içindeki verilerin her karaktere basıldığında filtrelenmesini sağlamış oluyoruz. Daha önceden oluşturmuş olduğumuz örneğe buradan ulaşabilirsiniz.
DataView RowFilter kullanımını gösteren Video:
çalıştırdığım zaman DataView dv = tablo.DefaultView;-da” System.NullReferenceException: ‘Object reference not set to an instance of an object.’
tablo was null” şeklınde hata veriyo.Nedeni ne ola bilir?
Hocam Parameters ile arama nasıl yapılıyor
teşekkürler. kullandım benim için yararlı oldu.
Teşekkür ederim hocam
Merhaba Hocam
Bu uygulamada tek bir sütunda filtreleme işlemi yapmışsınız ben birden fazla sütunda bu işlemi yapmak istiyorum aşağıdaki gibi denedim Syntax hatası veriyor yardımcı olur musunuz.
private void metroTextBox1_TextChanged(object sender, EventArgs e)
{
DataView dv = ds.Tables[0].DefaultView;
dv.RowFilter = “ItemNum,ItemName Like'” + metroTextBox1.Text + “%'”;
metroGrid1.DataSource = dv;
}
dv.RowFilter = “Ad Like ‘” + textBox1.Text + “%'” + “OR Soyad Like ‘” + textBox1.Text + “%'”;
şeklinde yapabilirsiniz.
Additional information: Cannot perform ‘Like’ operation on System.Int32 and System.String.
Sütunların veri tipleri farklı olduğundan şöyle bir hata veriyor
Satır şu şekilde:
dv.RowFilter = “ItemNum Like'” + metroTextBox1.Text + “%'”+ “or ItemName Like'” + metroTextBox1.Text+”%'”;
Teşekkürler. Cok faydalı oldu.