Asp.Net Gridview Çoklu Silme İşlemleri

1 yorum
Merhaba Arkadaşlar ,

Bu bölümde contanier controllerden asp.net Gridview 'i incelemeye çalışacağız.Herzamanki gibi blogun amacı olan bir şekilde detaylı bir örnek üzerinden anlatmaya çalışacağım.Ozaman ilk Uygulamamız gelsin .

Asp.Net Gridview Çoklu Silme İşlemleri

Bu bölümde hotmailin içinde bulunan çoklu silme ve seçme yapabildiğimiz gridview örneğimizle başlayalım .

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
namespace GridviewKullanimi
{
    public class Calisan
    {// Veri Tabanınını Modellediğimiz Calisan Class'ımız
        public int CalisanID { getset; }
        public string CalisanAdi { getset; }
        public string Cinsiyet { getset; }
        public string  Sehir { getset; }
    }
 
 
    public class CalisanIslemleri
    {//Sayfalarda kullandığımız Metodları içeren classımız
        public static List<Calisan> TumCalisanlarGelsin()
        {
            //List ile calisan tipinde verileri tutacağını söylüyoruz
            List<Calisan> calisan = new List<Calisan>();
 
            string baglantim = ConfigurationManager.ConnectionStrings["Bagla"].ConnectionString;
            //Garbage Collector ile veri tabanına baglanma İşlemlerimizi gerçekleştiriyoruz
            using (SqlConnection cnn = new SqlConnection(baglantim))
            {
                SqlCommand cmd = new SqlCommand("Select * from Calisan ", cnn);
                cnn.Open();
                SqlDataReader rdr = cmd.ExecuteReader();
                while (rdr.Read())
                {
                    // Verileri okuyup calısan adındaki bir instance dan alacağız 
                    //Yukarda listimiz bizden calisan istedemekteydi
                    Calisan cl = new Calisan();
                    cl.CalisanID = Convert.ToInt32(rdr["CalisanID"]);
                    cl.CalisanAdi = rdr["CalisanAdi"].ToString();
                    cl.Cinsiyet = rdr["Cinsiyet"].ToString();
                    cl.Sehir = rdr["Sehir"].ToString();
                    //calisan ismindeki generic listimize rdr ile okuyup doldurmuş olduğumuz classımızı
                    //ekliyoruz
                    calisan.Add(cl);
                }
            }
            return calisan;// Yazdığımız metod bizden geriyer genericlist tipinde <calisan > döndürmemizi istiyor
        }
 
        public static void CalisanSil(int CalisanID)
        {
            // ID ye göre gelen veri Siliniyor 
            string baglantim = ConfigurationManager.ConnectionStrings["Bagla"].ConnectionString;
            using (SqlConnection cnn = new SqlConnection(baglantim))
            {
                SqlCommand cmd = new SqlCommand("Delete From Calisan Where CalisanID=@CalID", cnn);
                cmd.Parameters.AddWithValue("@CalID", CalisanID);
                cnn.Open();
                cmd.ExecuteNonQuery();
            }
        }
 
        public static void CalisanSil(List<string> GelenCalisanIDleri)
        {
            // Tüm Metodların static yapılması sürekli instance almak istemeyişim
            string baglantim = ConfigurationManager.ConnectionStrings["Bagla"].ConnectionString;
            using (SqlConnection cnn = new SqlConnection(baglantim))
            {
                string gelenIDler = string.Empty;// string tipinde boş bir değişken oluşturuldu
                // amaç List<string> gelencalisanIDleri okunanları tutması
                foreach (string item in GelenCalisanIDleri)
                {
                    gelenIDler += item + ",";//her okunan ID 1,2,3,4,5, seklinde yazılıyor
 
                }
                gelenIDler = gelenIDler.Remove(gelenIDler.LastIndexOf(","));// en sonda olan fazladan 
                // atılmış "," işaret kaldırıldı
                string silineceklerlistesi = "Delete From Calisan where CalisanID IN (" + gelenIDler + ")";// Sorguda bulunan listeden gelecek Idlerin tamamı silineceklistesi adlı değişkene Aktarıldı 
                SqlCommand cmd = new SqlCommand(silineceklerlistesi, cnn);
                cnn.Open();
                cmd.ExecuteNonQuery();
            }
        }
    }
}
 
=====================================================================
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
namespace GridviewKullanimi
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                CalisanGetir();// Eğer Form PostBack Değilse CalisanGetir() Metodmuz tarafından dolacak
                //ve bu metod her bir yapdığımız silme işleminden sonra tekrar çağılmakta
            }
        }
 
        private void CalisanGetir()
        {
            grdSonuc.DataSource = CalisanIslemleri.TumCalisanlarGelsin();
            grdSonuc.DataBind();
        }
 
        protected void chckTum_CheckedChanged(object sender, EventArgs e)
        {
            // Amacımız sayfamızda eklemiş olduğumuz tümünüsec checkbox secili ise diger checkboxlarıda 
            // Secmek eğer secili değilse hiç biri secili olmasın 
            foreach (GridViewRow item in grdSonuc.Rows)
            {
                ((CheckBox)item.FindControl("ChckSecilen")).Checked = ((CheckBox)sender).Checked;
            }
        }
 
        protected void ChckSecilen_CheckedChanged(object sender, EventArgs e)
        {
            // Amacımız Tümcheckbozları secilip içinden herhangi birinin checked özelliği kakması 
            // Durumunda Tümcheckboxları secilmesini sağladığımız chckTum ismindeki checkboxımızından 
            // Check'ının kakması Unutulmamalıdırki gridview bir contanierdir .
            //Doğal olarak içerisindeki kontrolleri direk erişim yoktur
            //bu aşamada FindControl("aranacakkontrol"); bulunabilir
            
            CheckBox chBas = (CheckBox)grdSonuc.HeaderRow.FindControl("chckTum");
            if (chBas.Checked)
            {
                chBas.Checked = ((CheckBox)sender).Checked;
            }
            else
            {
                bool secilimi = true;
                foreach (GridViewRow item in grdSonuc.Rows)
                {
                    if (!((CheckBox)item.FindControl("ChckSecilen")).Checked)
                    {
                        secilimi = false;
                        break;
                    }
                }
                chBas.Checked = secilimi;
            }
        }
 
        protected void btnSil_Click(object sender, EventArgs e)
        {
            // Projemizin amacı ola çoklu silme işlemlerinin gerçekleşebilmesi
            //için list<string> tipnde tüm secilmiş ıdleri alacağız
            List<string> secililisteSil = new List<string>();
            foreach (GridViewRow item in grdSonuc.Rows)
            {
                if (((CheckBox)item.FindControl("ChckSecilen")).Checked)
                {
                    string calisanID = ((Label)item.FindControl("Label1")).Text;
                    secililisteSil.Add(calisanID);
                }
            }
            if (secililisteSil.Count > 0)
            {
                lblMesaj.ForeColor = System.Drawing.Color.Blue;
                CalisanIslemleri.CalisanSil(secililisteSil);// 2.YOL
                lblMesaj.Text = secililisteSil.Count.ToString() + "Adet calisan Silindi";
                //foreach (string item in secililisteSil)  1.YOL
                //{
                //    CalisanIslemleri.CalisanSil(Convert.ToInt32(item));
 
                //}
                CalisanGetir();
            }
            else
            {
                lblMesaj.ForeColor = System.Drawing.Color.Maroon;
                lblMesaj.Text = secililisteSil.Count.ToString() + "  Adet Kayıt Sectiniz.Lütfen Listeden Bir Kayıt Seçiniz";
            }
        }
    }
}
 




Asp.Net GridView Çoklu Secme Silme İşlemleri... paylaşan: sinan-d-arslan-1



Asp.Net GridView Çoklu Seçme Silme Video 2 paylaşan: sinan-d-arslan-1

1 yorum :

Soru Görüş önerileriniz için gmail plus üzerinden + layın müsait olduğumda mutlaka yanıt dönüyor olacağım.