Datagridview de her satıra isterseniz normal buton isterseniz de resimli buton ekleyerek, bunlara tıklanıldığında ilgili satır için istediğiniz işlemi yapabilirsiniz. Butonları arkaplanda kod ile oluşturarak datagridview e eklerken bunlara tıklanıldığında ne işlem yapılacağını belirtmek için de datagridview in cellClick event ını kullanacağız. Bu butonların yine bütün özelliklerine (renk, boyut, text...) de müdahale edebileceğimizi göreceksiniz....
Öncelikle bir form uygulaması açıp kullanacağımız dategridview i ekliyoruz, Datagridview1 şeklinde oluşan bu dategrid in adını değiştirmezseniz aşağıdaki kodlar direk kopyala yapıştır yaptığınızda sizde de çalışacaktır, birebir test edebilirsiniz. Şuan için oluşturulan form aşağıdakine benzer olacaktır
Şimdi normal bir buton oluşturarak işe başlayalım
/*** NORMAL BUTON EKLEME ***/
DataGridViewButtonColumn dgvBtn =
new
DataGridViewButtonColumn();
//Kolon Başlığı
dgvBtn.HeaderText =
"Detay"
;
// Butonun Text
dgvBtn.Text =
"Detay Getir"
;
// Butonda Text Kullanılmasını aktifleştirme
dgvBtn.UseColumnTextForButtonValue =
true
;
// Buton çerçeve rengi
dgvBtn.DefaultCellStyle.BackColor = Color.Blue;
// Buton seçiliykenki çerçeve rengi
dgvBtn.DefaultCellStyle.SelectionBackColor = Color.Red;
// Butonun genişiliği
dgvBtn.Width = 70;
// DataGridView e ekleme
dataGridView1.Columns.Add(dgvBtn);
/*** RESİMLİ BUTON EKLEME ***/
DataGridViewImageColumn img =
new
DataGridViewImageColumn();
// Resim Yolu
img.Image = Image.FromFile(
"search.png"
);
// Kolon Adı
img.HeaderText =
"Detay"
;
// Kolon(Resim) genişliği
img.Width = 50;
// DataGridView e ekleme
dataGridView1.Columns.Add(img);
// Diğer veriler için oluşturulan tablo
// Bunun yerine SQL den direk de çekebilirsiniz
DataTable tbl =
new
DataTable();
tbl.Columns.Add(
"AD"
);
tbl.Columns.Add(
"Yas"
);
tbl.Rows.Add(
"Emre"
,
"22"
);
tbl.Rows.Add(
"Yunus"
,
"51"
);
tbl.Rows.Add(
"Fatih"
,
"25"
);
dataGridView1.DataSource = tbl;
Verilerimizi de oluşturduktan sonra CellClick fonksiyonunu yazmaya geçebiliriz
private
void
dataGridView1_CellClick(
object
sender, DataGridViewCellEventArgs e)
{
if
(e.ColumnIndex == 0)
{
// hangi kolona göre işlem yapacaksak onun index i ile karşılaştırıyoruz
MessageBox.Show(
"Ad: "
+ dataGridView1.CurrentRow.Cells[2].Value.ToString()
+
"\nYas: "
+ dataGridView1.CurrentRow.Cells[3].Value.ToString(),
"Butondan Detay"
);
}
else
if
(e.ColumnIndex == 1)
{
// hangi kolona göre işlem yapacaksak onun index i ile karşılaştırıyoruz
MessageBox.Show(
"Ad: "
+ dataGridView1.CurrentRow.Cells[2].Value.ToString()
+
"\nYas: "
+ dataGridView1.CurrentRow.Cells[3].Value.ToString(),
"Resimliden Detay"
);
}
}
Artık programımızı çalıştırdığımızda oluşturulan butonlar çıkacak ve butonlara tıklandığında da belirtilen işlemleri gerçekleştirecektir. Şuan için butona tıklandığında mesaj vermesini ve hangisinden tıkladıysak mesaj kutusunun başlığının ona göre olmasını ayarladık. Butonlara tıkladığımızda aşağıdaki gibi çalışacaktır