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.

 

Yorumlar

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

    • 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..

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

  3. Gerçekten faydalı oldu çok sağolun

  4. harika olmuş :)))))

Yorum Yapın


Yeni yorum yapıldığında haber ver.

İletişim

Her türlü istek, görüş, öneri ve eleştirileriniz için iletişim formunu kullanarak bana ulaşabilirsiniz. Veya sosyal ağlardan takip edebilirsiniz. Bana Ulaşın