Repeater’da Düzenleme, Güncelleme ve Silme

Herkese merhaba bu yazımda sizlere, Repeater kullanarak nasıl düzenleme, güncelleme ve silme işlemlerini gerçekleştirebileceğinizi en basit haliyle anlatacağım. Herkesin rahatça anlayabilmesi için tasarıma dikkat etmedim ve olabildiğince basite indirgeyerek yazmaya çalıştım. Projede ben MSSQL veri tabanı kullandım ornek isimli veritabanıma bağlanıp içerisine blog isimli bir tablo oluşturdum. Tablo içerisindeyse ID,baslik ve içerik stunları bulunmakta. Sizlerin de herhangi bir veritabanına bağlanıp repeater a verileri doldurduğunuzu var sayıyorum. Önce default.aspx sayfamızın kodlarını verip sonra neler yaptığımı anlatayım.

 

Default.aspx

       <asp:Repeater ID="yazilarRepeater" runat="server" onitemcommand="yazilarRepeater_ItemCommand">
       <ItemTemplate>       
       <div>Başlık: <%# Eval("baslik") %> <br /> İçerik:  <%# Eval("icerik") %></div>
       <div>
       <asp:LinkButton ID="lnkDuzenle" runat="server" CommandArgument="duzenle"
        CommandName=<%# Eval("id") %> ToolTip="Düzenle">Düzenle</asp:LinkButton>

       <asp:LinkButton ID="lnkSil" runat="server" CommandArgument="sil"
        CommandName=<%# Eval("id") %> ToolTip="Sil">Sil</asp:LinkButton>
       </div>
       <br />         
       </ItemTemplate>
       </asp:Repeater>  

       <br /><br />

       <asp:Panel ID="duzenlePanel" runat="server" Visible="false">
              <div>
               <p> IÇERİK DÜZENLE </p>
       <asp:TextBox runat="server" ID="txtBaslik2" Width="257px"></asp:TextBox><br />
       <asp:TextBox runat="server" ID="txtIcerik2" TextMode="MultiLine" Rows="4" 
               Columns="10" Width="258px"></asp:TextBox><br />
               <asp:Label runat="server" ID="IDlbl" Visible="false"></asp:Label>
       <asp:Button ID="btnGuncelle" runat="server" Text="Güncelle" onclick="btnGuncelle_Click" />
       </div>
       </asp:Panel>

 

Gördüğünüz gibi sayfaya bir adet repeater ekledim, repeater içerisine ise verileri yazdırdıktan sonra 2 adet LinkButton ve 1 adet Label
ekledim(Tasarımınıza göre LinkButton yerine Button,ImageButton vb kullanabilirsiniz.). Label'a değer olarak ID değerini atayıp Visible özelliğini false yapıyoruz. Repeater'ile işimiz bittikten sorna hemen altında duzenlePanel isminde bir panel ekleyip Visible özelliğini false yapıp içerisinede verileri güncellemek için, 2 adet TextBox, 1 adet Button ve 1 adet Label ekliyoruz. Codebehind kısmında kodların yanına açıklamalarını yaptığım için tekrar burda yazmıyorum.

 

protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack) //Postback değilse yapılacak işlemler.
            {
                doldur();
            }
        }

        public void doldur()
        {
            baglanti.Open();
            SqlCommand cmd = new SqlCommand("Select * from blog order by id desc", baglanti);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            yazilarRepeater.DataSource = dt;
            yazilarRepeater.DataBind();
            baglanti.Close();
        }

        protected void yazilarRepeater_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            //Tıklanan Button'un CommandName argümanına göre işlem yapıyoruz. 
            if (e.CommandArgument.Equals("duzenle")) 
            {
                baglanti.Open();
                 //Repeater'ın içindeki Sil isimli LinkButton'u bulup, değerini id isimli değişkene atadık.
                int id = Convert.ToInt32(((LinkButton)e.Item.FindControl("lnkSil")).CommandName);

                //Seçilenin ID değerine göre verileri çekip düzenleme panelindeki textbox'lara yazdırıyoruz.
                SqlCommand cmd = new SqlCommand("Select * from blog where id="+id+"", baglanti);
                SqlDataReader dr = cmd.ExecuteReader();
                dr.Read();
                txtBaslik2.Text = dr["baslik"].ToString();
                txtIcerik2.Text = dr["icerik"].ToString();
                //Düzenleme panelindeki IDlbl isimli label e ID değeri atıyoruz.
                IDlbl.Text = dr["id"].ToString();
                dr.Close();
                dr.Dispose();
                baglanti.Close();
                //Düzenleme panelini ekranda görünür hale getiriyoruz.
                duzenlePanel.Visible = true;
            }
            else if (e.CommandArgument.Equals("sil"))
            {
                baglanti.Open();
                //Repeater'ın içindeki Sil isimli LinkButton'u bulup, değerini id isimli değişkene atadık.
                int id = Convert.ToInt32(((LinkButton)e.Item.FindControl("lnkSil")).CommandName);

                //Silme işlemini gerçekleştirecek SqlCommand'ımızı belirliyoruz.
                
                SqlCommand cmd = new SqlCommand("Delete from blog where id="+id+"", baglanti);
                cmd.ExecuteNonQuery();
                Response.Write("Silme İşlemi Gerçekleştirildi.");
                baglanti.Close();
                //doldur isimli metodumuzu çağırarak repeatera verileri tekrar dolduruyoruz.
                doldur();
            }
        }

        protected void btnGuncelle_Click(object sender, EventArgs e)
        {
            baglanti.Open();

            //Düzenle paneldeki IDlbl isimli label dan düzenlenecek verinin ID'değerini aldık.
            int id = Convert.ToInt32(IDlbl.Text);
            //ID değerine göre veritabanında güncelleme işlemini yapıyoruz.
            string sql="Update blog set baslik='"+txtBaslik2.Text+"',icerik='"+txtIcerik2.Text+"' where id="+id+"";
            SqlCommand cmd = new SqlCommand(""+sql+"", baglanti);
            cmd.ExecuteNonQuery();
            //Düzenleme panelini gizliyoruz.
            duzenlePanel.Visible = false;
            baglanti.Close();
            //Doldur isimli metodumuzu çağırarak repeatera verileri tekrar dolduruyoruz            
            doldur();           
        }

Elimden geldiğince basit bir şekilde Repeater üzerinde düzenleme, güncelleme ve silme işlemlerini nasıl gerçekleştirebileceğinizi anlattım. Bir şeyler anlatmanında ne kadar zor olduğunun farkına varmış oldum. Umarım faydalı olmuştur.

 

Sosyal Ağlarda Paylaşın

Share on Tumblr

Facebook Yorumları


Yorumlar (10)

  • taylan Yanıtla

    Dostum kodlar çok işime yaradı, teşekkürler...

    3/7/2011 21:45:00
  • B-Rk Yanıtla

    Rica ederim, işine yaradığına sevindim. Bu arada label'dan id almak yerine imagebutton'ların commandname argünmanlarına id değerini yazdırıp sonra tekrar ordan okuyabilirsin, daha az kod ve aynı iş :D Hatta ben de bu yazıyı düzenliyim..

    3/7/2011 22:34:52
  • hasan Yanıtla

    Ellerine sağlık çok işime yaradı. Paylaşımlarının devamını diliyorum.

    3/20/2011 05:51:14
  • mehmet y Yanıtla

    Gerçekten faydalı oldu çok sağolun

    5/13/2011 11:30:01
  • ahmet güler Yanıtla

    harika olmuş :)))))

    3/22/2012 14:39:34
  • Yücel Solak Yanıtla

    bu kodların uygulama videoları görsel eğitim olara aşağıdaki sitede mevcut istifade edeceğinizi umuyorum. http://e-gorselegitim.com/Aspnet_SqlCommand_ile_veri_ekleme_silme_Video_29

    12/21/2012 14:18:09
  • Furkan T Yanıtla

    BU SİTE BİR HARİKA DOSTUM

    9/18/2013 20:01:22
  • mehmet Yanıtla

    yücel abi ben güncelleme işlemini yapamıyorum kodlarımda hata yok ama olmuyo birkere güncelliyo sonrası yok bi yardımcı olurmusun :(bu yüzden koskoca proje işe yaramıyo.

    2/4/2015 13:27:14
  • utku Yanıtla

    çok iyi anlakmıysınız hocam elinize sağlık

    4/22/2016 10:58:33
  • Burak Değerliyurt Yanıtla

    Teşekkürler, faydalı olabildiğime sevindim :)

    4/24/2016 21:40:27

Yorum Yapın