none
Grid'de seçili satırların silinmemesi RRS feed

  • Soru

  • Merhaba ben formumda gridView de olan kayıtlardan checkboxla seçili olanların hepsini silmek istiyorum. Foreach'le işlemi yaptım, fakat örmeğin 3 tane eleman seçtiysem son seçilen elemanı ve ondan sonra ki 2 kaydı siliyor, silmek istediğim 2 kayıt kalıyor.

                                       

                int[] veriler= gridView1.GetSelectedRows();

                if (MessageBox.Show("Silmek istediğinizden emin misiniz?", "Uyarı !", MessageBoxButtons.YesNo,                  MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    foreach (var kayit in veriler)
                    {
                        db.tablo.Remove(tabloBindingSource.Current as tablo);
                        tabloBindingSource.RemoveCurrent();
                         db.SaveChanges();   
                    }
    }
                else

                {
                    Listele();
                }

    kodlar'da bir yanlışlık var ama çözemedim.Yardımcı olursanız çok sevinirim.



    • Düzenleyen Emre9394 4 Kasım 2019 Pazartesi 14:08
    4 Kasım 2019 Pazartesi 13:43

Tüm Yanıtlar

  • Binding source olarak gösterdiğiniz veri listesinden silme işlemi yapıp güncel listeyi yeniden bind etmeyi deneyin.

    Altan Özdemir

    4 Kasım 2019 Pazartesi 14:42
  • Hocam ben şöyle bir işlem yaptım:

           DbEntities db;
            public void Listele()
            {
                db = new DbEntities();
                tblBilgiBindingSource.DataSource = db.TblBilgi.ToList();
            }

        private void Sil_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
            {
                if (MessageBox.Show("Silmek istediğinizden emin misiniz?", "Uyarı !", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    gridView1.DeleteSelectedRows();
                    db.SaveChanges();
                }
            else
            {
                Listele();
            }
        }  

    SaveChanges dememe karşın veritabanından silmek istedeiğim satırlar silinmiyor. BindingSource'dan seçilen satırlar nasıl siliniyor bilmiyorum.

    //db.TblBilgi.Remove(tblBilgiBindingSource.Current as TblBilgi);
    //tblBilgiBindingSource.RemoveCurrent();
    //db.SaveChanges();

     Current'la da 1 satır silinebiliyor. Yardımcı olup beni aydınlatırsanız ççok makbüle geçer,çünkü neden kaydetmiyor gerçekten anlamıyorum.

    Yanıtınız için ayrıca teşekkürler hocam.


    • Düzenleyen Emre9394 5 Kasım 2019 Salı 09:39
    5 Kasım 2019 Salı 09:39
  • datagridde cell click yaptığımız zaman row count u bir düşük değerden başlatmak gerekiyor.

    şöyle bir form döngüsü deneyebilirsin 

    foreach (I=0; I<datagridview1.Rows.Count-1; I++)
                    {
                           
                    }

    5 Kasım 2019 Salı 09:50
  • Hocam ilk kod parçasıyla yapmaya çalıştığımda bir kaç satır seçince

      db.tablo.Remove(tabloBindingSource.Current as tablo);

    bu satırda hata verdi. Sanırım Current o an ki tek satırı siliyor alternatif bişey bulamadım ve de dev express te çalıştığım için datagridview'e bağlı fonksiyonların bazıları çalışmıyor. Fakat şu an sorunum:

    DbEntities db;
            public void Listele()
            {
                db = new DbEntities();
                tblBilgiBindingSource.DataSource = db.TblBilgi.ToList();
            }

        private void Sil_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
                {
                    gridView1.DeleteSelectedRows();
                    db.SaveChanges();
                }
        }  

    Bu kod parçasını çalıştırırken veritabanına neden kaydetmediği. Sanırım listelerken BindingSource'u çağırıp silerken gridView'den silmem, fakat bu ikisini nasıl ilişkilendiririm bi fikrim yok.


    • Düzenleyen Emre9394 5 Kasım 2019 Salı 10:10
    5 Kasım 2019 Salı 10:07
  • Hocam ilk kod parçasıyla yapmaya çalıştığımda bir kaç satır seçince

      db.tablo.Remove(tabloBindingSource.Current as tablo);

    bu satırda hata verdi. Sanırım Current o an ki tek satırı siliyor alternatif bişey bulamadım ve de dev express te çalıştığım için datagridview'e bağlı fonksiyonların bazıları çalışmıyor. Fakat şu an sorunum:

    DbEntities db;
            public void Listele()
            {
                db = new DbEntities();
                tblBilgiBindingSource.DataSource = db.TblBilgi.ToList();
            }

        private void Sil_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
                {
                    gridView1.DeleteSelectedRows();
                    db.SaveChanges();
                }
        }  

    Bu kod parçasını çalıştırırken veritabanına neden kaydetmediği. Sanırım listelerken BindingSource'u çağırıp silerken gridView'den silmem, fakat bu ikisini nasıl ilişkilendiririm bi fikrim yok.


    Upp
    5 Kasım 2019 Salı 11:58