C# C# Windows Form Örnekleri Programlama

C# DataGridView’ de Sağ Tuş Menüsü Kullanarak Veri Silme

Bu yazımızda C# ile veri tabanından DataGridView içine veri çekerek oluşturduğumuz Sağ tuş menüsü (ContextMenuStrip) ile DatagridView kontrolü üzerinde farenin sağ tuşuna bastığımızda satırın seçilmesini ve bu seçilen satırdaki verinin veritabanından silinmesini gerçekleştiren bir örnek oluşturacağız.

datagrid_siralama_iptal

Örneğimizde yukarıdaki form tasarımını kullanacağız. Ayrıca kutuphane.mdb isimli access dosyasını kullanacağız. kutuphane.mdb dosyamızı projemizde Bin\Debug klasörüne kopyalayacağız.

Form açıldığında verilerin DatagridView kontrolünde gösterilmesini sağlayacağız. DataGridView üzerinde sağ tıklandığında ise satırın seçilmesini ve Sil komutunun görüntülenmesini sağlayacağız.Formumuz tasarlayarak Sağ tuş menüsü eklemek için Toolbox‘ tan ContextMenuStrip kontrolünü formumuza sürükleyelim ve Sil menüsünü oluşturalım.

datagrid_sag_tus_silme_2

Şimdi de DatagridView kontrolü üzerinde tıklayarak Properties penceresinde ContextMenuStrip özelliğini aşağıdaki gibi ayarlayalım.

Ayrıca yine DataGridview kontrolünde SelectionMode özelliğini FullRowSelect  ve MultiSelect özelliğini False olarak ayarlayalım.

Bu ayarları açıklamak gerekirse ContextMenuStrip özelliğinde oluşturduğumuz sağ tuş menüsünün DatagridView üzerinde sağ tuşa basıldığında çalışmasını, SelectionMode – FullRowSelect özelliği ile tüm satırın seçili olarak görünmesini ve MultiSelect özelliğinin False olarak ayarlanması ile de çoklu seçim yapılamayacağını ayarlamış oluyoruz.

datagrid_sag_tus_silme_3

 

Şimdi kodlarımızı yazacağız. Kodlarımızda Verileri çekme işlemini Doldur() isimli metotta, Silme işlemini ise Sil() isimli metotta gerçekleştireceğiz.

Kodlarımızı yazmaya;

 

kütüphanemizi projemize dahil ederek başlayalım.
Daha sonra kullanacağımız nesneleri projemize public olarak ekleyelim. numara adlı değişkeni datagridview’ de tıklanan satırdaki öğrencinin numarasını almak için kullanacağız.

Şimdi Doldur isimli metodumuzu oluşturalım. Bu metod verilerin DataGridView‘ de görüntülenmesini sağlayacak.

Daha sonra Sil isimli metodu oluşturacağız. Bu metot öğrenci numarasına göre kayıt silme işlemi yapacağından parametreli olarak oluşturacağız. Parametre olarak öğrenci numarasını alacağız.

Form_Load olayında datagridview’de kayıtların görüntülenmesini sağlamak için Doldur metodunu çağıralım.

DataGridview’de seçilen satırdaki kayda ait ogrno verisinin numara değişkenine aktarılmasını sağlayalım. Bunun için DatagridView MouseDown olayını kullanacağız.

Bu işlem sonucunda silmek istediğimiz öğrenci numarasını numara değişkenine almış oluyoruz. Şimdi ContextMenuStrip‘ te oluşturmuş olduğumuz Sil menüsüne basıldığında Sil metodu ve Doldur metodunun çalıştırılmasını sağlayalım.

Kodlarımızı tamamlamış olduk. Artık DataGridview üzerinde sağ tıklandığında Sil menüsü açılarak Sil butonuna basıldığında ilgili kaydın silinmesi sağlanacak.

datagrid_sag_tus_silme_1

26 Yorum

  • selamunaleykum ustam sana bir sorum olacak: bir tane textboxum var ve ıki tanede datatimepickerım var .textboxa girilen veriye göre butona bastığımda veritabanında kayıtlı verinin iki tarih aralığında olanları nasıl listeletebilirim datagride
    textboxa girilen: estas_kodu

    private void button1_Click(object sender, EventArgs e)
    {

    tablo.Clear();
    baglanti.Open();
    OleDbDataAdapter adp = new OleDbDataAdapter(“SELECT * FROM kayit Where tarih BETWEEN @tar1 and @tar2 and estas_kodu=@estas_kodu”, baglanti);
    adp.SelectCommand.Parameters.AddWithValue(“@estas_kodu”, textBox1.Text);
    adp.SelectCommand.Parameters.AddWithValue(“@tar1”, dateTimePicker1.Value.ToShortDateString());
    adp.SelectCommand.Parameters.AddWithValue(“@tar2”, dateTimePicker2.Value.ToShortDateString());
    adp.Fill(tablo);
    dataGridView1.DataSource = tablo;
    baglanti.Close();

    baglanti.Open();
    OleDbCommand komut = new OleDbCommand(“select sum(saglam_uretim) from kayit where tarih between @tar1 and @tar2”, baglanti);
    komut.Parameters.AddWithValue(“@tar1”, dateTimePicker1.Value.ToShortDateString());
    komut.Parameters.AddWithValue(“@tar2”, dateTimePicker2.Value.ToShortDateString());
    label4.Text = komut.ExecuteScalar() + “Adet”;
    baglanti.Close();
    }

  • com.Parameters.AddWithValue(“@id”, Convert.ToInt32((dataGridView1.CurrentRow.Cells[0].Value)));
    satırında
    Nesne, DBNull’dan diğer türlere atanamaz.
    hatası alıyorum yardımcı olurmusunuz

  • Kendi projeme uyarlamaya çalıştığımda tekrar aynı hata ile karşılatım ;
    con.Open();
    string sql = “delete from musteri where musteri_id=@no”;

    musteri_id alanını bulmuyor. Bursaki tanımlamayı tc_no, adi gibi değerlerle değiştirebilirmiyiz.

  • Attığınız örnekle birebir aynı , bu defa context menu çalışmıyor sağ tıkladığımda sil görünmüyor ve de ‘Form1.komut’ alanı hiçbir zaman kullanılmaz: gibi bir hata ile karşılaştım

  • hata alıyorum yardımıcı olur musunuz. numara = Convert.ToInt32(dataGridView1.Rows[satir].Cells[“no”].Value); alan bulunamadı diyor

  • Site içinde sql bağlantısı örneği mevcut. Sağ tuş ile silme işlemi için ise çok önemli bir değişiklik olmayacaktır.

admin için bir yanıt yazın X

Web Tasarım & Programlama sitesinden daha fazla şey keşfedin

Okumaya devam etmek ve tüm arşive erişim kazanmak için hemen abone olun.

Okumaya devam et