Yazılımcının Günlüğü | YazilimGunlugu.Com
Arama
Makale Kategorileri
Üye Girişi
Şuanki online üyeler()
Aktif üye bulunmamaktadır.


Gridview Kontrolü ile Çoklu Silme İşlemi

Yazar: Sem GÖKSU

Kategori: ASP.NET

Eklenme Tarihi: 22.05.2007 02:24:04

Merhaba arkadaşlar bu makalemizde gridview kontrolü içerisinde seçili olan kayitları silme işleminin nasıl yapılacağına bakacağız...

Gridview Kontrolü ile Çoklu Silme Islemi

Kalabalik bir kayit listesi içerisinde gereksiz olan bir çok kayit silinmek istendiginde bu kayitlari tek tek silmek çogu zaman kullanici için sikici bir istir. Bunun için kullanici gereksiz olan kayitlari kendisi seçip, tek bir sefer de silmeyi tercih eder. Bu kullaniciya büyük kolaylik saglar. Normalde gridview nesnesinde kayit listesinin yaninda sil isimli bir buton koyar ve o satirdaki kaydi sildirirdik. Biz gridview nesnemizi biraz daha genisleterek kullanıcının kayitlarin tümünü seçerek veya tek tek silecegi bir kayit listesi sunacagiz.

Ilk olarak visual studio açalim ve asp.net projesi olusturalim. Ben dil olarak C# Seçtim.




Daha sonra projemizde kullanacagimiz nesnelerden bahsedelim. Ben projemde Northwind database’i içerisindeki Products tablosunu kullanacagim. Field olarak da Grid içerisin de ProductID, ProductName ve UnitPrice fieldlarini kullanacagim. Ek olarak grid içerisinde bir template field olusturup Header Template içerisine CheckAll isimli bir checkbox ve item template içerisinede deleteRec isimli bir checkbox kontrolü ekledim. Birde seçecegim kayitlari sildirmek için bir adet link buton ekledim. Form tasarimim asagidaki gibi olustu.





Formumuzun tasarimini tamamladiktan sonra simdi Tümünü seç ve tek tek seçim yapmak için gerekli olan javasctipt kodlarini yazalim.

function check_uncheck(Val)

check_uncheck(Val) check_uncheck(Val)

{

var ValChecked = Val.checked;

var ValId = Val.id;

var frm = document.forms[0];

for (i = 0; i < frm.length; i++)

{

if (this != null )

{

if (ValId.indexOf(’CheckAll’ ) != - 1)

{

if

if (ValChecked)

frm.elements[i].checked = true ;

else

frm.elements[i].checked = false ;

}

else if (ValId.indexOf(’deleteRec’ ) != - 1)

{

if (frm.elements[i].checked == false )

frm.elements[1].checked = false ;

}

} // if

} // for

} // function

Javascript içerisine fonksiyonlarimizi yazdiktan sonra bunu gridview nesnesi üzerindeki checkboxlarda çagiralim.

< asp : GridView ID ="dbGrid" runat ="server" AutoGenerateColumns ="False" CellPadding ="4"

asp : GridView ID ="dbGrid" runat ="server" AutoGenerateColumns ="False" CellPadding ="4"

Font-Names ="Trebuchet MS" Font-Size ="X-Small" ForeColor ="#333333" GridLines ="None"

Width ="448px">

< FooterStyle BackColor ="#5D7B9D" Font-Bold ="True" ForeColor ="White" />

< Columns >

< asp : TemplateField >

< HeaderTemplate >

< asp : CheckBox ID ="CheckAll" runat ="server" onClick ="return check_uncheck(this);" /> --->>> tümünü Seç

</< />HeaderTemplate >

< ItemTemplate > < asp : Label ID ="ProductID" Visible ="false"

Text =’ ’

runat ="server" />

< asp : CheckBox ID ="deleteRec" runat ="server" onClick ="return check_uncheck (this );" /> --->>> Tek Tek Seç

</< />ItemTemplate >

< FooterTemplate >

</< />FooterTemplate >

</< />asp : TemplateField >

< asp : BoundField DataField ="ProductID" HeaderText ="ProductID" />

< asp : BoundField DataField ="ProductName" HeaderText ="ProductName" />

< asp : BoundField DataField ="UnitPrice" HeaderText ="UnitPrice" />

</< />Columns >

< RowStyle BackColor ="#F7F6F3" ForeColor ="#333333" />

< EditRowStyle BackColor ="#999999" />

< SelectedRowStyle BackColor ="#E2DED6" Font-Bold ="True" ForeColor ="#333333" />

< PagerStyle BackColor ="#284775" ForeColor ="White" HorizontalAlign ="Center" />

< HeaderStyle BackColor ="#5D7B9D" Font-Bold ="True" ForeColor ="White" HorizontalAlign ="Left" />

< AlternatingRowStyle BackColor ="White" ForeColor ="#284775" />

</< />asp : GridView >

Bu yazdiklarimizi test edelim. Projemizi çalistiralim ve tek tek kayitlari seçelim. Ardindan tümünü seç butonuna tiklayip düzgün çalisip çalismadigini kontrol edelim.





Kodumuz düzgün çalistigina göre artik sectigimiz kayitlari silelim.

protected void LinkButton2_Click(object sender, EventArgs e)

void LinkButton2_Click(object sender, EventArgs e)

{

string gvIDs = "" ;

bool chkBox = false ;

foreach (GridViewRow gv in dbGrid.Rows)

{

CheckBox deleteChkBxItem = (CheckBox )gv.FindControl("deleteRec" );

if (deleteChkBxItem.Checked)

{

chkBox = true ;

gvIDs += (( Label )gv.FindControl("ProductID" )).Text.ToString() + "," ;

}

}

SqlConnection cn = new SqlConnection ("Data Source=.; Initial Catalog=Northwind; uid=sa; pwd=" );

if (chkBox)

{

try

{

string deleteSQL = "DELETE from Products WHERE ProductID IN (" +

gvIDs.Substring(0, gvIDs.LastIndexOf( "," )) + ")" ;

SqlCommand cmd = new SqlCommand (deleteSQL, cn);

cn.Open();

cmd.ExecuteNonQuery();

dbGrid.DataSource = DataTableGetirLan();

dbGrid.DataBind();

Response.Write( "Seçmis oldugunuz kayitlar Silindi !" );

}

catch (SqlException err)

{

Response.Write(err.Message.ToString());

}

finally

{

cn.Close();

}

}

}

Son olarak silme işlemini de test edelim.




Gördügümüz gibi tek sefer de seçmis oldugumuz kayitlar silindi.

Not: Eger sizde nortwind içerisindeki Products tablosunu kullanacaksaniz diger tablolar ile arasinda bulunan iliskileri kaldirin. Yoksa kayitlari silerken hata alacaksiniz.

Bu makalemizinde sonuna geldik. Umarim faydali bir makale olmustur. Iyi günler ve başarılar dilerim.

Sem GÖKSU
MCP | MCAD.NET | MCTS

Örnek kodlar için mail adresimi kullanabilirsiniz.

askisem@hotmail.com

Yazar Hakkında 1 Yorum Yorum Yaz Yazara ait diğer Makaleler
Tema
Anket
ASP.NET MVC'yi Projeleriniz de kullandınız mı?


En Çok Okunan Makaleler
En Son Eklenen Makaleler
Soru Merkezinde Bekleyenler
Ana Sayfa | Hakkımızda | Editörler | Yazarlar | RSS RSS | İletişim
Yazılım Günlüğü 2007-2009 © Tüm Hakları Saklıdır.