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.
Facebook Yorumları
Yorumlar (10)
Dostum kodlar çok işime yaradı, teşekkürler...
3/7/2011 21:45:00Rica 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:52Ellerine sağlık çok işime yaradı. Paylaşımlarının devamını diliyorum.
3/20/2011 05:51:14Gerçekten faydalı oldu çok sağolun
5/13/2011 11:30:01harika olmuş :)))))
3/22/2012 14:39:34bu 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:09BU SİTE BİR HARİKA DOSTUM
9/18/2013 20:01:22yü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çok iyi anlakmıysınız hocam elinize sağlık
4/22/2016 10:58:33Teşekkürler, faydalı olabildiğime sevindim :)
4/24/2016 21:40:27