C# TextBox veri süzme işlemi nedir? Nasıl yapılır? Bu soruların cevabı için yazımın devamını okumanızı tavsiye ederim. Bu makalede anlatacağım işlemi kısaca özetleyelim. TextBox’a her sayı ya da harf girişinde verileri süzerek listeleme nasıl yapılır?  Onu anlatacağız.

Örneğin DatagridView’de gösterilen verileri süzmek için; TextBox’a girilen her harf ya da rakama göre DatagridView’deki veriler listelensin. Bir nevi arama kutusu gibi düşünün. Bu işlem nasıl yapılır? diyorsanız, şimdi takip edin.

Önce Windows Form’a bir adet TextBox ve bir adet DataGridView ekleyin.  Daha önceki yazılarımda da anlattığım gibi Form’un Load olayına DatagridView’ de verilerin listelenmesi için gerekli kodlarımı yazmaya başlıyorum.

using System.Data.OleDb;//Access kütüphanesi
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        OleDbConnection bag = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Data.accdb");
        //BURASI VERİTABANI BAĞLANTISI
        OleDbCommand kmt = new OleDbCommand(); // Burası kmt isimli bir komut tanım cümlesi.
        DataTable tablo = new DataTable();  // tablo isiminde bir Datatable tanımladık.
        private void Form1_Load(object sender, EventArgs e)
        {
            tablo.Clear(); //tabloyu temizledik          
            OleDbDataAdapter adtr = new OleDbDataAdapter("Select * From Kayit", bag);
            // verileri SQL sorgusu ile adaptöre aktardık.
            adtr.Fill(tablo); //adaptördeki verileri tablonun içine doldurduk.
            dataGridView1.DataSource = tablo; //tablodaki verileri datagridview'e aktardık.
        }

Burada ki kodlarımız ile Form açılınca verileri DatagridView’de göstermiş olduk. İsterseniz bu işlemi listele adında bir class oluşturarakta yapabilirsiniz.

Şimdi gelelim TextBox’ın TextChanged işlemine.

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (textBox1.Text.Trim() == "")
    {
        tablo.Clear();
        OleDbDataAdapter adtr = new OleDbDataAdapter("Select * From Kayit", bag);
        adtr.Fill(tablo);
        dataGridView1.DataSource = tablo;
    }
    else
    {
        tablo.Clear();
        OleDbDataAdapter adtr = new OleDbDataAdapter("Select * From Kayit Where ogrNo Like'" + textBox1.Text + "%'", bag);
        OleDbDataAdapter adtr2 = new OleDbDataAdapter("Select * From Kayit Where Adi Like'" + textBox1.Text + "%'", bag);
        adtr.Fill(tablo);
        adtr2.Fill(tablo);
        dataGridView1.DataSource = tablo;
    }

Kodlarımızı yazdık. else komutu içerisinde 2 adaptör tanımladık ve SQL sorgularımızı yazdık. Ben sadece veritabanındaki 2 alana göre süzme işlemini yapmasını istediğim için, 2 adaptör tanımladım ve SQL sorgularımı ogrNo ve Adi alanlarına göre yazdım.

Burda if else kullanmasaydık şu sorun ortaya çıkacaktı. TextBox’a bir harf ile süzme işlemi yapmayı deneyin. sonra vazgeçin ve Backspace tuşu ile yazdığınız harfi silin, DatagridView’de veritabanındaki bilgilerin 2 defa yazıldığını göreceksiniz. Bu sorunun önüne geçmek için if else kullandık ve if sorgusuna TextBox’a girilen değerin silinmesi durumunda DatagridView’deki verilerin tekrar veritabanından çekilmesini sağladık. Böylelikle DatagridView’de verilerin 2 kez veya daha fazla aynı değerleri listelemesini engellemiş olduk.

Şimdi son hali ile projemizi çalıştıralım(F5).