ASP.NET Responsive Web Sitesi yapımının 3.bölümünde veritabanı işlemlerine devam edeceğiz. 2.bölümdeki yapılan uygulamanın üzerinde sayfaları ve kodları yazmaya devam ediyorum. 2.bölümdeki uygulamayı indirmek için buraya tıklayın.
Haber Sil Sayfasının Yapımı (ASP.NET Delete İşlemi)
Projeyi açmak için file /Open/ Web Site ile YazilimBilisimNet klasörünü seçiyoruz.
Solution Explorer’da site adı üzerinde sağ tıklayıp masterpage sayfasını kullanan bir tane Web Form ekliyoruz. (HaberSil.aspx olarak oluşturdum)
Silinecek haberleri listelemek için kod tasarımında bootstrap nesneleri ile aspx ve html kodlarını aşağıdaki gibi yazıyoruz.
Bu kısımda önemli olan button nesnesinin DataId niteliğindeki değerinin haberin id değerini alması sorgulama yaparken bu id üzerinden haberi bulup sileceğiz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server"> <div class="container"> <div class="row"> <table class="table table-striped"> <tr> <td>ID</td> <td>Başlık</td> <td>Özet</td> <td>Sil</td> </tr> <asp:Repeater ID="Repeater1" runat="server"> <ItemTemplate> <tr> <td><%#Eval("Id") %></td> <td><%#Eval("Baslik") %></td> <td><%#Eval("Ozet") %></td> <td> <asp:Button ID="Button" DataId='<%#Eval("Id") %>' CssClass="btn btn-danger" OnClick="Button1_Click" runat="server" Text="Sil" /> </td> </tr> </ItemTemplate> </asp:Repeater> </table> </div> </div> </asp:Content> |
Sayfayı çalıştırıp butona tıkladığımızda güvenlik hatası almamak için HaberSil.aspx sayfasın EnableEventValidation=”false” bildirimini yazıyoruz.
HaberSil.aspx dosyasında design tasarımına geçip Page_Onload metodunu oluşturmak için content dışında bir alan üzerinde çift tıklıyoruz. Default.aspx sayfasındaki load metodundaki kodların aynısını yazıyoruz.
Tazele adında bir tane metod oluşturup hem Page_Load metodunda hem de kayıt silme işleminden sonra repeater nesnesini silmek için oluşturuyoruz.
Tazele Metodu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public void Tazele() { SqlConnection baglanti = new SqlConnection(); baglanti.ConnectionString = ConfigurationManager.ConnectionStrings["Conn"].ConnectionString; SqlCommand komut = new SqlCommand(); komut.Connection = baglanti; komut.CommandText = "select * from Haber"; baglanti.Open(); SqlDataReader rd; rd = komut.ExecuteReader(); Repeater1.DataSource = rd; Repeater1.DataBind(); baglanti.Close(); } |
Page_Load Metodu
1 2 3 4 5 6 |
protected void Page_Load(object sender, EventArgs e) { Tazele(); } |
Sayfa yüklenme kodlarını yazdıktan sonra buton nesnesine tıklandığında çalışacak Button1_Click metodunun kodlarını yazıyoruz.
Button1_Click Metodu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
protected void Button1_Click(object sender, EventArgs e) { Button btn = (Button)sender; string haberId= btn.Attributes["DataId"].ToString(); //sql nesnesi ve bağlantı cümlesi SqlConnection baglanti = new SqlConnection(); baglanti.ConnectionString = ConfigurationManager.ConnectionStrings["Conn"].ConnectionString; /*resim disk üzerinden silmek için resim yolunu okuma*/ SqlCommand komut = new SqlCommand(); komut.Connection = baglanti; komut.CommandText="select Resim from Haber where Id=" + haberId; baglanti.Open(); SqlDataReader rd; rd = komut.ExecuteReader(); rd.Read(); string resimAd=rd.GetString(0); string resimyol = Server.MapPath("~/") + resimAd; if (resimAd!="") { ResimSil(resimyol); } rd.Close(); /*dosya silindikten sonra kaydı siliyoruz*/ komut.CommandText = "delete from Haber where Id=" + haberId; komut.ExecuteNonQuery(); baglanti.Close(); /*repeater nesnesini güncelliyoruz*/ Tazele(); } |
resimSil metodu
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/*resim yoluna göre dosyayı siler*/ public bool ResimSil(string resimyol) { resimyol = resimyol.Replace('/', '\\'); if (File.Exists(resimyol)) { File.Delete(resimyol); return true; } return false; } |
Çok teşekkürler. Video dersleri de eklemeyi düşünüyormusunuz acaba ??
Youtube Kanalı: YazilimBilisimNet