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 { get; set; } public string CalisanAdi { get; set; } public string Cinsiyet { get; set; } public string Sehir { get; set; } } 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
Başarılı bir anlatım olmuş.
YanıtlaSil