12 Ara 2006 Gridview Kontrolü ile Çoklu Silme İşlemi Kategori: ASP.NET Etiketler: ASP.NETASP.NET 2.0 1 Yorum Merhaba arkadaşlar bu makalemizde gridview kontrolü içerisinde seçili olan kayıtları silme işleminin nasıl yapılacağına bakacağız...Kalabalık bir kayıt listesi içerisinde gereksiz olan bir çok kayıt silinmek istendiginde bu kayıtları tek tek silmek çogu zaman kullanıcı için sıkıcı bir istir. Bunun için kullanıcı gereksiz olan kayıtları kendisi seçip, tek bir sefer de silmeyi tercih eder. Bu kullanıcıya büyük kolaylık saglar. Normalde gridview nesnesinde kayıt listesinin yanında sil isimli bir buton koyar ve o satırdaki kaydı sildirirdik. Biz gridview nesnemizi biraz daha genisleterek kullanıcının kayıtların tümünü seçerek veya tek tek silecegi bir kayıt listesi sunacagız. Ilk olarak visual studio açalım ve asp.net projesi olusturalım. Ben dil olarak C# Seçtim. Daha sonra projemizde kullanacagımız nesnelerden bahsedelim. Ben projemde Northwind database'i içerisindeki Products tablosunu kullanacagım. Field olarak da Grid içerisin de ProductID, ProductName ve UnitPrice fieldlarını kullanacagım. 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 kayıtları sildirmek için bir adet link buton ekledim. Form tasarımım asagıdaki gibi olustu. Formumuzun tasarımını tamamladıktan sonra simdi Tümünü seç ve tek tek seçim yapmak için gerekli olan javasctipt kodlarını yazalım. function 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 (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 fonksiyonlarımızı yazdıktan sonra bunu gridview nesnesi üzerindeki checkboxlarda çagıralım. <asp : GridView ID ="dbGrid" runat ="server" AutoGenerateColumns ="False" CellPadding ="4" Font-Names ="Verdana" 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> <İtemTemplate> <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> <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 yazdıklarımızı test edelim. Projemizi çalıstıralım ve tek tek kayıtları seçelim. Ardından tümünü seç butonuna tıklayıp düzgün çalısıp çalısmadıgını kontrol edelim. Kodumuz düzgün çalıstıgına göre artık sectigimiz kayıtları silelim. protected 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 kayıtlar Silindi !" ); } catch (SqlException err) { Response.Write(err.Message.ToString()); } finally { cn.Close(); } } } Son olarak silme islemini de test edelim. Gördügümüz gibi tek sefer de seçmis oldugumuz kayıtlar silindi. Not: Eger sizde nortwind içerisindeki Products tablosunu kullanacaksanız diger tablolar ile arasında bulunan iliskileri kaldırın. Yoksa kayıtları silerken hata alacaksınız.Bu makalemizinde sonuna geldik. Umarım faydalı bir makale olmustur. Iyi günler ve basarılar dilerim.Sem GÖKSU MCP | MCAD.NET | MCTSÖrnek kodlar için mail adresimi kullanabilirsiniz.askisem@hotmail.com Yorum (1) Vedat YILDIZ / 10.5.2009 22:54:42 Sem bey tşk ederim . ama seçme işleminde ki function nereye yazıyoruz linkbutton tıklandığındamı. Yorum Yaz * Ad Soyad: * Email: * Message:
Yorum (1) Vedat YILDIZ / 10.5.2009 22:54:42 Sem bey tşk ederim . ama seçme işleminde ki function nereye yazıyoruz linkbutton tıklandığındamı.
Vedat YILDIZ / 10.5.2009 22:54:42 Sem bey tşk ederim . ama seçme işleminde ki function nereye yazıyoruz linkbutton tıklandığındamı.