Asp.Net Datalist'in bir çok olay yordami vardir. Biz Bugun ItemCommand'i kullanarak Datalist içinde attigim linkbutton ile bazi örnek islemler yapacagiz.
Bunlardan bazilari , Silme, Onaylama, Gönderme gibi. Yada asagida yapacagim ilk örnekde oldugu gibi bir buton araciligi ile gizli bulunan farkli butonlari gösterme gibi. ( Daha sonra ki makalelerimde iç içe datalist kullanarak ufak bir forum uygulamasi yapacagiz)
Datalist'imi Sqldatasource araciligi ile dolduruyorum. Asagidaki resimde göreceginiz gibi ID ve sehir isimleri mevcut. Ve en son kolonda da Tikla beni isimli bir linkButtonumuz var.
Veriler için herhangi bir kod yazma isleminde bulunmadim. Basit bir uygulama olacagini düsündügüm için sqldatasource ile erismeyi uygun gördüm.
Html Tarafinda datalist içerigime 3 sutundan olusan bir tablo açtim. Ilk sutuna <%#Eval(“ID”)%> kavrami ile ID ikinci sutuna Sehir ismi üçüncü sutuna ise bir link button ekledim.
Yanliz burada dikkat etmeniz gereken bir husus var ki html kaynak tarafinda linkbutton uma CommandArguement ve CommandName propertylerine kendi degiskenlerime verdim. Buradaki CommandName bizim Datalist ItemCommand eventinde erisecegimiz isim ve Arguement kismi ise yine ItemCommanda erisecegimiz bizim gönderdigimiz artik ID olur sehir adi olur yada gizli bir degiskende gönderebiliriz.
Örnek :
<asp:LinkButton ID="BtnTiklat" CommandName="TiklaBeni" CommandArgument='<%#Eval("ID") %>' runat="server">Tikla Beni</asp:LinkButton>
Html tarafini tamamladiktan sonra Datalistimizin ItemCommand eventine geçiyoruz. Burada yapmamiz gereken ufak bir ara kontrol var ki bu kontrolün nedenini açiklayacagim.
If e.CommandName = "TiklaBeni" Then
'Yapacagimiz islemler
End If
Yukaridaki ara kontrolümüzün nedeni sudur ; Bizler datalistimizde birden fazla ItemCommand’a deger gönderebiliriz. Dolayisi ile verdigimiz isimleri bir if kosuluna alirsak hangi islemin nerede yapilacagini belirleyebiliriz.
Kontrolümüzü yaptiktan sonra gelelim datalistimizin içindekibulunan diger butonlari yakalamaya.
If e.CommandName = "TiklaBeni" Then
Dim TickID As Integer = Convert.ToInt32(e.CommandArgument)
Dim BtnGizli1 As Button = DirectCast(e.Item.FindControl("BtnGizli1"), Button)
BtnGizli1.Visible = True
Dim BtnGizli2 As Button = DirectCast(e.Item.FindControl("BtnGizli2"), Button)
BtnGizli2.Visible = True
End If
Gördügünüz gibi kosulumuzun içine TickID ile linkbuttondan gönderdigim ID alanima eristim. Yanliz bu örnekte ID alanimizin herhangi bir yardimi bulunmamaktadir. Burada sadece görmeniz açisindan yazdim.
Daha sonra Button ile datalist içinde verdigim butonumun ismini FindControl ile buluyorum ve çok basit olarak Visible olaylarini aktif ediyorum.
Bu sadece datalist içindekileri yakalamak için ufak bir örnek oldu.
2. Örnegimiz ise yine yukaridaki örnekden gidecegimiz ve silme islemlerini yapacagimiz kisim.
Söyleki yukarida da bahsettigm gibi linkbutton CommandName özelligine kendim bir isim belirlemistim.
Simdi bu ismi Sil olarak belirleyelim ve silme islemlerini nasil yapacagimizi anlatayim.
Yukaridaki örnekten yola çikarsak ; Datalist içindeki linkButtonumuza CommandName özelligine Sil veriyorum.
<asp:LinkButton ID="BtnTiklat" CommandName="Sil" CommandArgument='<%#Eval("ID") %>' runat="server">Silmek için Tiklayiniz</asp:LinkButton>
Yine Datalistimizin ItemCommand olayindan yararlanarak ;
If e.CommandName = "Sil" Then
'Veri silme isleminiz
Dim SehirD As Integer = Convert.ToInt32(e.CommandArgument)
End If
Burada veri silme isleminizi bir class yordami ile yapar göndereceginiz id ye ise SehirID yi gönderirsiniz. Class da ise hangi ID ye esit ise veritabaninizdan silersiniz. Gördünüz mü ne kadar basit?