C# DataGridView’den Veri Çekme

C# DataGridView’den Veri Çekme

31 Aralık 2018 0 Yazar: Mustafa BÜKÜLMEZ
Toplam Görüntülenme : 278
Yaklaşık okuma süresi : 11 DK
C# Web Browser Son Sürüm IE Kullanmak
C# Kelime Heceleme İşlemi
C# DataGridView’den Veri Çekme
5 (100%) 1 Oy

C# DataGridView’den Veri Çekme, dersimiz ile C# eğitim setimize devam ediyorum. Bu dersi yazmamın en büyük sebebi bu konu hakkında çok soru gelmesidir. Her 3 sorudan birisi bu konu hakkında olduğundan kapsamlı bir yazı yazmayı uygun gördüm. Ancak daha önce windows nesnelerini çok kullanmadım. Devexpress kullanmıyorsanız hemen araştırıp kullanmaya başlamanızı tavsiye ederim.

C# DataGridView’den Veri Çekme

Bu gibi işlemlerde kullanabileceğimiz bir kaç form tasarımı var.

Birincisi, gridview ve textbox’lar aynı form içerisinde yer alır. Gridview sağda yada altta olur. Gridview’e tıkladığımızda veriler alınır ve textbox’lara yazılır.

İkinci, ilk önce gridview ‘in yer aldığı form açılır. Girdview üzerinde satıra çift tık yapıldığında form açılır ve veriler doldurulur ya da gridvew’in olduğu forma bir contextmenustrip koyarız ve girdview’e bağlarız. contextmenustrip’e de Güncelle menüsü ekleriz. Sağtık Güncelle dediğimizde bu işlemler yapılır. Bağlantıya tıkladığınızda ContextMenuStrip kullanımını görebilirsiniz.

Üçüncüsü, form mantıklarını birinci de yada ikinci de olduğu gibi yapabilirsiniz. Gridviewden sadece ID değerini alırsınız. Sonrasında texbox’ların olduğu forma ID değerini göndeririz. Bir datatable ile o aldığımız ID değerine göre verileri çekeriz ve texboxlara verileri aktarırız.

En mantıklı gördüğüm yöntemi bu dersimde anlatacağım. Mantıklı olan durum önce liste formun açılması ve buradan alınan bilgilerle texbox ların olduğu forma aktarma işlemini yapmak olacaktır. O yüzden diğer yöntemleri anlatmayacağım. Benzer şeyler olduğundan diğer yöntemleri sizlerin denemesini isterim.

Bu dersimin içeriğini de Github projemde bulabilirsiniz. Dersin sonunda linki vereceğim.

Bu ders içerisinde

  1. C# SQL Server Bağlantısı Yapmak
  2. C# DataGridView’e Veri Çekmek
  3. C# DataGridView’den Veri Çekmek
  4. C# DataTable’den Veri Çekmek
  5. C# Formlar Arası Veri Aktarımı 
  6. C# ContextMenuStirp Kullanımı
İlgili İçerik  C# DevExpress GridView Grup Başlık Renklendirme

Konularını göreceğiz. Bu 5 başlığı da C# Eğitim Seti ‘me ekleyip bu yazıya linkleyeceğim.


Liste Formu

Şimdi DataGridView ‘i ListeFormu adlı formumuza ekliyoruz ve verilerimizi gösteriyoruz. Ek olarak formumuza 1 adet ContextMenuStrip ekliyoruz. Grid üzerinde sağtık yapıp çıkan menü de güncelle dediğimizde veri okuma işlemi yapacağız. Aşağıda Liste formundaki  kodları görebilirsiniz.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace mustafabukulmez_com_dersler._8_Gridview_den_textbox_a_Veri_cekme
{
    public partial class ListeForm : Form
    {
        public ListeForm()
        {
            InitializeComponent();
        }

        SqlConnection con = new SqlConnection();
        SqlDataAdapter da = new SqlDataAdapter();
        SqlCommand com = new SqlCommand();
        DataSet ds = new DataSet();

        void griddoldur()
        {
            con = new SqlConnection(@"Server=.\SQL2014;Database=mustafabukulmez;User ID=user; Password=sifre;pooling=true; ");
            da = new SqlDataAdapter("Select * From PERSONEL_TANIMLARI", con);
            ds = new DataSet();
            con.Open();
            da.Fill(ds, "Personel");
            dataGridView1.DataSource = ds.Tables["Personel"];
            con.Close();
        }


        private void ListeForm_Load(object sender, EventArgs e)
        {
            griddoldur();
        }
        int ID = 0;
        private void dataGridView1_DoubleClick(object sender, EventArgs e)
        {
            KaydiGuncelle();
        }
        private void güncelleToolStripMenuItem_Click(object sender, EventArgs e)
        {
            KaydiGuncelle();
        }
        void KaydiGuncelle()
        {
            // ilk kolon ID kolonu olduğundan ID değerimizi alıyoruz. Burada sadece ID 'yi alacağız.
            ID = Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value.ToString()); //[0] sütun numarası
            // ID değerini aldıktan sonra diğer forma göndereceğiz ve orada bir datatable üzerinden verileri
            // alacağız

            TextBoxForm fr = new TextBoxForm();
            fr.Okunan_ID = ID;
            fr.ShowDialog();

            // Güncellemeyi yaptıktan sonra listeyi güncellemek için... 
            // Açılan form kapandığında işlemlere kaldığı yerden devam eder böylece listeyi güncellemiş oluruz.
            // NOT: Formu ShowDialog() olarak açmak zorundasınız.  Yoksa form açıldıktan sonra işleme devam eder
            // Bu yüzden açılan form kapandıktan sonra güncelleme yapmaz.
            griddoldur();
        }


    }
}

Yukarıdaki kodlarda açıklamalar zaten yazıyor ama ben yine de tekrar edeyim.

Burada ilk olarak formdaki datagridview’e verileri çekiyoruz. Sonrasında DataGridView’in DoubleClick eventi içerisinde DataGridView’deki per_RECno kolonundaki ID değerini alıyoruz public bir değişken ile güncelleme ve kayıt için kullanacağımız forma iletiyoruz.

İlgili İçerik  C# Extension Methods - Genişletme Metodları #1

DataGridView’in DoubleClick eventi ve ContextMenuStip’in Kaydı Güncelle menüsü aynı kodu kullanıyorlar. Bu yüzden ilgili kodları bir void yaptık ve iki event içerisinde de kullandık. Şimdi güncelleme formumuzu görelim

 

TextBox Formu

Liste Formundan gelen ID bilgisini kullanarak SQL den verileri bir DataTable ‘ye alıyoruz. Sonrasında bu DataTable’deki verileri Textbox’lara alacağız. Şimdi de Textbox_Formu kodlarınızı görelim.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace mustafabukulmez_com_dersler._8_Gridview_den_textbox_a_Veri_cekme
{
    public partial class TextBoxForm : Form
    {
        public TextBoxForm()
        {
            InitializeComponent();
        }

        SqlConnection con = new SqlConnection();
        SqlDataAdapter da = new SqlDataAdapter();
        SqlCommand com = new SqlCommand();
        DataSet ds = new DataSet();

        // Bu değişkene grid formundan ID değerini atayacağız.
        public int Okunan_ID = 0;


        private void TextBoxForm_Load(object sender, EventArgs e)
        {
            txt_ID.Text = Okunan_ID.ToString();

            // Burada Okunan_ID varsa yani bir kaydı güncellemek için bu formu açtırdıysak,
            // Aldığımız ID değerin ile sqlden tüm verileri çekip textboxlara aktaracağız. 
            // Okunan_ID değeri 0 ise güncelleme işlemi değildir.
            if (Okunan_ID > 0)
            {
                Oku();
            }
        }
        void Oku()
        {
            DataTable dt = new DataTable();
            con = new SqlConnection(@"Server=.\SQL2014;Database=mustafabukulmez;User ID=user; Password=sifre;pooling=true; ");
            da = new SqlDataAdapter("Select * From PERSONEL_TANIMLARI where per_RECno = " + Okunan_ID + "", con);
            ds = new DataSet();
            con.Open();
            da.Fill(ds, "Personel");
            dt = ds.Tables["Personel"];
            con.Close();


            txt_per_adi.Text = dt.Rows[0]["per_Adi"].ToString();
            txt_per_soyad.Text = dt.Rows[0]["per_Soyadi"].ToString();
            txt_per_TC.Text = dt.Rows[0]["per_TC"].ToString();
            txt_per_tel.Text = dt.Rows[0]["per_Telefon"].ToString();



        }



    }
}

Kodlarımızda yukarıda göründüğü gibidir.  Okunan_ID değişkenine aldığımzı veriyi kullanarak SQL den tüm satır bilgisini aldık ve TextBox’lara yazdık.


Burada verdiğim yöntem bence en mantıklı yöntemdir. Bu örnekte girdden almamız gereken 4 yada 5 satırlık bilgi olabilir ama yeri gelecek 60, 70 farklı bilgi gerekecek. Her bu işlem gerektiğinde bu kadar çok değişken tanımlamak hem performans hemde  kontrol açısından kötü olacaktır. Bu yüzden benimde sürekli olarak kullandığım yöntemi sizlere anlattım.

İlgili İçerik  C# Registry (Regedit) İşlemleri – Yazma Okuma

C# DataGridView’den Veri Çekme, dersimiz de bu kadar dostlar. Diğer derslerimizde görüşmek üzere.

C# eğitim seti sayfasına gitmek için tıklayabilirsiniz.

Ayrıca kısa süre önce tüm YENİ derslerimi tek bir proje içinde yapıp github’a yükleyeceğim demiştim. Bu dersimde o projenin içerisinde bir klasör olarak yerini almıştır. Buraya tıklayarak projeye ulaşabilirsiniz.

Takipte Kalın.

C# Web Browser Son Sürüm IE Kullanmak
C# Kelime Heceleme İşlemi