Bu makalemizde sizlere herkesin ısrarla arama motorlarında aradığı bir konuyu ele alıyoruz. Çoğu kişi şu konudan şikayetçi: Ben bir veri girişi yapıyorum fakat datagridview’de anında görünmüyor, her defasında programı açıp kapatmam gerekiyor diyor. Aslında bu işlem çok basit 2-3 satır kod ile halledilebilen bir şey. Şimdi görelim.

Önce Windows Form’a bir adet datagridview, 1 adet buton, 1 adet label ve 2 adet textbox ekleyelim. Buradaki işlem şu şekildedir. Textbox’lara girdiğimiz verileri kaydet butonuna tıklayarak veritabanına kaydedeceğiz ve butonun altında bulunan datagridview’de göstereceğiz. Her kaydetme işleminden sonra datagridview’de anında yapılan işlem görünecektir. Butonun üzerine çift tıklayarak kod ekranına geçelim. Kodlarımız şu şekildedir.

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");
        OleDbCommand kmt = new OleDbCommand(); DataTable tablo = new DataTable();
        private void listele() //listele adında bir class belirledik.
        {
            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;
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            listele();
        }
    }
}

Buraya kadar olan kodlarımızı açıklayayım. Burada listele adında bir class belirledik. Yani verileri datagridview’de göstermek için bu listele class’ını kayıt işleminden sonra tekrar kullanacağız ki verileri yenilesin. Kısacası datagridview veritabanından tekrar veri çeksin anlamına gelmektedir. Şu an biz sadece Form1’in Load olayına yazdık listele() class’ını. Bu da demek oluyor ki Form her açıldığında veritabanındaki verileri datagridview’de gösterecektir.

Şimdi gelelim butonun veritabanına kayıt olayı ve bu kayıt işleminin datagridview’de gösterilmesine.

private void button1_Click(object sender, EventArgs e)
{
    if (textBox1.Text.Trim() != "" && textBox2.Text.Trim() != "")
    {
        bag.Open(); // bağlantıyı açtık.
        kmt.Connection = bag; // bağlantıyı komutumuza atadık.
        kmt.CommandText = "INSERT INTO Kayit(Adi,Soyadi) VALUES 
        ('"+textBox1.Text+"', '"+textBox2.Text+"')";
    kmt.ExecuteNonQuery(); //Sorgumuzu çalıştırdık.
        MessageBox.Show("KAYDEDİLDİ !!""Bilgi");
        listele(); // datagridviewdeki verileri yeniledik.
    }
    else
    {
        MessageBox.Show("Lütfen boş alan bırakmayınız !""Uyarı"MessageBoxButtons.OKMessageBoxIcon.Warning);
        //kullanıcıyı uyardık.
    }
    bag.Close(); //bağlantıyı kapattık.
}

Gördüğünüz gibi listele komutu ile veritabanından verileri tekrar çağırdık ve yapılan işlemin hemen görülmesini sağladık. Böylelikle datagridview’in yenilenmesini sağladık.

Sizde bir işlem yaptığınız zaman yenileme işlemi yapmak istiyorsanız bu mantığı kullanmanızı öneririm. Buradaki gibi bir class içinde kodlarınızı tanımlarsanız. Aynı kodları tekrar tekrar yazmak zorunda kalmazsanız. Güzel ve temiz kod yazmış olursunuz.