Bu yazımızda C# ile SQL bağlantısı kurarak kayıtları DataGridView üzerinde listeleyerek, dataGridView üzerinde birden fazla satır seçerek seçilen bu satırların veri tabanından silinmesini sağlayayan bir örnek oluşturacağız. DataGridView üzerinde Tüm satırın seçilebilmesi için SelectionMode Özelliğini FullRowSelect ve çoklu seçim yapılabilmesi için MultiSelect özelliğini True olarak ayarlayacağız.
Form tasarımızı 1 adet DataGridView ve 1 adet Button ekleyerek aşağıdaki gibi oluşturalım.
Örneğimizde Sql Bağlantısı kullanacağımızdan ilk olarak;
1 2 3 | using System.Data.SqlClient; |
kütüphanesini ekleyelim. Bu örnek için sadece Çoklu seçim işlemi ve silme işlemini gerçekleştireceğiz. Eğer veri tabanına kayıt ekleme, güncelleme işlemlerini de görmek isterseniz buraya tıklayarak ilgili sayfaya ulaşabileceğinizi belirterek örneğimize dönelim.
Sql bağlantılarımızda kullanacağımız nesneleri public olarak oluşturalım.
1 2 3 4 5 6 | SqlConnection con; SqlDataAdapter da; DataSet ds; SqlCommand komut; |
DataGridView üzerinde kayıtların listelenmesi için ve Seçilen satırların Silinmesi için metot tanımlaması yapacağız. Listeleme işlemi için griddoldur(), silme işlemi için KayıtSil metotlarını tanımlayacağız.
DataGridView içine verilen çekilmesi için griddoldur metodumuzu aşağıdaki gibi oluşturalım.
1 2 3 4 5 6 7 8 9 10 11 12 | void griddoldur() { con = new SqlConnection("server=.; Initial Catalog=dbOkul;Integrated Security=SSPI"); da = new SqlDataAdapter("Select *From Ogrenci", con); ds = new DataSet(); con.Open(); da.Fill(ds, "Ogrenci"); dataGridView1.DataSource = ds.Tables["Ogrenci"]; con.Close(); } |
KayıtSil metodumuz öğrenci numarasına göre silme işlemi yapacağından parametre olarak int türünde bir değişken kullanacağız.
1 2 3 4 5 6 7 8 9 10 11 | void KayıtSil(int numara) { string sql = "DELETE FROM Ogrenci WHERE numara=@numara"; komut = new SqlCommand(sql, con); komut.Parameters.AddWithValue("@numara", numara); con.Open(); komut.ExecuteNonQuery(); con.Close(); } |
Şimdi oluşturduğumuz bu metotları kullanmaya başlayalım. ÖForm ilk açıldığında verilerin doldurulması için Form_Load olayına aşağıdaki kod satırını ekleyelim.
1 2 3 4 5 6 | private void Form1_Load(object sender, EventArgs e) { griddoldur(); } |
Seçili kayıtları Sil Butonu için ise aşağıdaki kodları oluşturalım. Kodlarımızı incelediğimizde Foreach döngüsü ile seçili olan kayıtların tümünün DataGridViewRow oluşturularak seçilmesi ve her satırda öğrenciye ait numara bilgisinin çekilerek KayıtSil metoduna gönderildiğini görüyoruz.
1 2 3 4 5 6 7 8 9 10 11 | private void button1_Click(object sender, EventArgs e) { foreach (DataGridViewRow drow in dataGridView1.SelectedRows) //Seçili Satırları Silme { int numara = Convert.ToInt32(drow.Cells[0].Value); KayıtSil(numara); } griddoldur(); } |
Hepsi bu kadar. Artık Ctrl tuşuna basılı tutarak datagridView’ de seçmiş olduğumuz satırların Sil butonuna basıldığında silindiğini göreceğiz.
Kodlarımızın tamamı aşağıdaki gibi olacaktır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | 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 DataGridCokluSatirSilme { public partial class Form1 : Form { public Form1() { InitializeComponent(); } SqlConnection con; SqlDataAdapter da; DataSet ds; SqlCommand komut; void griddoldur() { con = new SqlConnection("server=.; Initial Catalog=dbOkul;Integrated Security=SSPI"); da = new SqlDataAdapter("Select *From Ogrenci", con); ds = new DataSet(); con.Open(); da.Fill(ds, "Ogrenci"); dataGridView1.DataSource = ds.Tables["Ogrenci"]; con.Close(); } void KayıtSil(int numara) { string sql = "DELETE FROM Ogrenci WHERE numara=@numara"; komut = new SqlCommand(sql, con); komut.Parameters.AddWithValue("@numara", numara); con.Open(); komut.ExecuteNonQuery(); con.Close(); } private void Form1_Load(object sender, EventArgs e) { griddoldur(); } private void button1_Click(object sender, EventArgs e) { foreach (DataGridViewRow drow in dataGridView1.SelectedRows) //Seçili Satırları Silme { int numara = Convert.ToInt32(drow.Cells[0].Value); KayıtSil(numara); } griddoldur(); } } } |
Datagridview deki bütün kayıtlar siliniyor niyeyse
“DataGridViewRow drow” kırmızı geliyor, nasıl düzeltebilrim
Hocam hayırlı geceler çoklu satırları silebiliyorum bu kod ile ama bana bir tane seçtiğim satırı silmesini istiyorum bunun için Kod’u nasıl düzeltmeliyim.Teşekkür Ederim.
http://www.yazilimkodlama.com/programlama/c-datagridview-de-sag-tus-menusu-kullanarak-veri-silme/
hocam ellerinize sağlık, Datagridviewde satır seçme işini ctrl tuşuna basmadan sadece sol click özelliğini kullanarak nasıl seçme yaptırabilirim.
Çok güzel anlatmışsınız. Teşekkürler.
Datagridwiev’in sütunlarındaki sayıları nasıl toplarız
Örnek olarak 2. sütunda bulunan verileri toplamak için.
Teşekürler Hocam işimize yaradı
kütüphane otomasyonu yapıyorum kitap ödünç al ve ver böümleri olması gerek tek bir sayfada ödünç ver’e tıkladdığımda altta bulunan data grid viewe kitap ve üye bilgilerini girecek. ödünç al’a tıkladığımda da data gid view de bulunan bilgileri yukarıdaki alanlara aktarıcak.Data grid view arası veri aktarımı gibi yardımcı olur mususnuz nasıl yapabilirim?