Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

ADO.NET – C# DataGridView Nesnesi

Bu yazımda veri kontrollerinden olan DataGridView nesnesini ayrıntılı bir biçimde anlatmaya çalışacağım.Sadece özellikleri baz alınarak değil,veritabanı bağlantısı kurup,bir kaç ufak uygulama göstereceğim.
DataGridView 
Kısaca DataGridView en esnek biçimde verilerimizi listelemeye yarayan bir kontroldür.
Şimdi formumuza bir DataGridView kontrolü ekleyelim ve formun Load olayına veritabanından çekilen verileri kontrolümüzde gösterelim.

          SqlConnection baglanti = new SqlConnection("server=GENÇAY-GENÇAY;database=northwind;trusted_connection=true;");
        SqlDataAdapter dta;
        DataTable dt=new DataTable();
        private void Form1_Load(object sender, EventArgs e)
        {
            dta = new SqlDataAdapter("Select * from Personeller",baglanti);
            dta.Fill(dt);
            dataGridView1.DataSource = dt;
        }

Yukarda veritabanı bağlantısını yapıp, DataGridView kontrolünde verilerimizi listeledik.

1.DataGridView’in gösterdiği tüm kolonlar,DataGridView’in Columns koleksiyonun da tutulur.Özelliklerini oradan ayarlayabiliriz.Kolonlardan hücrelere(Cell) ulaşamayız.

         dataGridView1.Columns["Adi"].Visible = true;
            //Visible ile "Adi" kolonunun gözüküp gözükmeyeceğini ayarlayabiliriz.
            dataGridView1.Columns["Adi"].ToolTipText = "Personel Adı";
            //ToolTipText ile kolonun üzerine imleci getirince çıkan yazıyı belirleriz.
            MessageBox.Show(dataGridView1.Columns["Adi"].Name);
            //Name ile kolonun adını öğrenebiliriz.
            dataGridView1.Columns["Adi"].HeaderText = "Personel Adı";
            //HeaderText ile kolonun adını değiştirebiliriz.

DefaultCellStyle özelliği DataGridViewCellStyle tipinde değer alır.Kolon,sütun ya da komple DataGridView’i biçimlendirme ayarlarını içine alır.

            DataGridViewCellStyle dgvcs=new DataGridViewCellStyle();
            dgvcs.BackColor=Color.Cyan;
            dgvcs.Font=new Font("comic sans ms",3f);
            dgvcs.ForeColor=Color.DarkOrange;
            dataGridView1.DefaultCellStyle = dgvcs;

Yukardaki kod bütün DataGridView için geçerli bir biçimlendirme ayarına sahiptir.

   DataGridViewCellStyle dgvcs=new DataGridViewCellStyle();
            dgvcs.BackColor=Color.Cyan;
            dgvcs.Font=new Font("comic sans ms",3f);
            dgvcs.ForeColor=Color.DarkOrange;
            dataGridView1.Columns["Adi"].DefaultCellStyle = dgvcs;

Yukardaki kod sadece “Adi” kolonunun biçimlendirme ayarına sahiptir.
2.DataGridView’in gösterdiği tüm satırlar,DataGridView’in Rows koleksiyonun da tutulur.Özelliklerini oradan ayarlayabiliriz.Satırlardan hücrelere(Cell) ulaşabiliriz.

dataGridView1.Rows[3].Cells["Adi"].Value = "deneme";
            //3. satırın "Adi" kolonunun değerini "deneme" yap.
            dataGridView1.Rows[5].Visible = false;
            dataGridView1.Rows[3].Cells["Adi"].ToolTipText = "Adlar";

Aynı şekilde DataGridViewCellStyle tipinde satırlara ve hücrelere biçimlendirme yapabiliriz.


Şimdi gelelim DataGridView’e eklenen kolonların tipine.Default olarak TextBox tipindeki kolonlara verileri sıralıyoruz.Ben CheckBox tipinden ya da ComboBox tipinden kolon yapmak istiyorsam DataGridViewCheckBoxColumn tipinden nesne olusturup bunu DataGridView’in Colums koleksiyonuna atmalıyım.

DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn();
            cmb.HeaderText = "ComboBox kolon";
            cmb.Visible = true;
            dataGridView1.Columns.Add(cmb);

Yukarıdaki DataGridViewCheckBoxColumn tipinden oluşturduğumuz gibi DataGridViewTextBoxColumn vs.. gibi tiplerde mevcuttur.


DataGridView CellClick Olayı
DataGridView üzerinde herhangi bir hücreye tıklandığı zaman meydana gelen olaydır.

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {

        }

Hangi hücreye tıklandığı bilgisi bu olayın parametresi olan DataGridViewCellEventArgs tipindeki e değişkenine gelecektir.Bu değişken sayesinde tıklanan hücrenin satır ve kolon bilgilerine ulaşabiliriz.

e.ColumnIndex;
//Tıklanan hücrenin kolon index numarasını verir.
e.RowIndex;
//Tıklanan hücrenin satır index numarasını verir.

Dikkat : Kolonların isminin yazılı olduğu satır ve en soldaki veri taşımayan satırda -1 index numaralarına sahiptir.
Şimdi tıkladığımız hücrenin kolon ve satır index numaralarını alalım.

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            MessageBox.Show(e.ColumnIndex + " " + e.RowIndex);
        }

Şimdi ise tıkladığımız hücrenin özelliklerine ulaşmaya çalışalım.

dataGridView1[e.ColumnIndex, e.RowIndex]

Yukardaki kod sayesinde tıkladığımız hücreye ulaşabiliyoruz.Artık bu ifade hücreyi temsil ediyorsa “.” operatörü ile o hücrenin özelliklerine ulaşabilirim.

this.Text = dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();
            //O hücrenin değerine ulaşırım.
            dataGridView1[e.ColumnIndex, e.RowIndex].Style.BackColor = Color.Red;
            //o hücrenin rengini ayarlarım.

Tıkladığımız hücreye DataGridViewCellStyle tipinden stil oluşturabiliriz.

DataGridViewCellStyle stil = new DataGridViewCellStyle();
            stil.BackColor = Color.Blue;
            dataGridView1[e.ColumnIndex, e.RowIndex].Style = stil;
//Bu DataGridViewCellStyle atarken hücrenin Style özelliğine atamalıyız.

Not : DataGridView EditMode’unu EditProgrammatically yaparsanız,kullanıcıya DataGridView üzerinden verileri değiştirmeye izin vermemiş olursunuz.

 dataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;
//Varsayılan olarak EditMode EditOnKeystrokeOrF2 değerdedir.

Bu yazımda burada son buluyor.İyi çalışmalar.

Bunlar da hoşunuza gidebilir...

3 Cevaplar

  1. Ahmet dedi ki:

    Merhabalar

    C# form datagriedview de bir hücreye resim ekleyip aynı hücrede resmin altına yazı yazmayı nasıl yaparız.

    Herkese iyi çalışmalar

  2. Hasibe Açıkbaş dedi ki:

    Hocam Merhabalar,
    Benim kendi çapımda yaptığım bir projem var. Projenin içinde ödeme aldığım ve bu ödemeleri taksitlere böldüğüm bir formum var. Bu formda eğer seçili satırdaki taksit miktarı ödenmesi gereken taksit miktarından büyükse ödenmemiş tutarı bir sonraki aya aktarmak yada tam tersi durum var ise bir sonraki aydan düşmek istiyorum.
    Kısacası sorum şu ben ödeme girdiğim satır bilgisini alıyorum ancak bir sonraki satırın bilgilerini alıp o satırda yukarıda anlattığım işlemi yapmak istiyorum. Bunu nasıl yapabilirim?
    İlginiz için şimdiden teşekkürler, iyi çalışmalar.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*