Asp.Net Datalist ItemCommand Kullanarak içerikdeki butonlara erişebilme

by hakan 16. Ağustos 2008 11:52

Merhabalar ;

Asp.Net te verileri bir çok şekilde taklalar attırarak listeleyebiliriz. Bugun sizlere datalist ile ufak basit bir örnek yapacağız. Bunu yapma nedenim ise bazı forumlarda hep karşılaştığım soru tiplerindendir. Bende her seferinde Cevaplanması yerine böyle günlüğümde yayınlayım ki belki biri görür de yardımcı oluruz : )

Asp.Net Datalist'in bir çok olay yordamı vardır. Biz Bugun ItemCommand'ı kullanarak Datalist içinde attığım linkbutton ile bazı örnek işlemler yapacağız.

Bunlardan bazıları , Silme, Onaylama, Gönderme gibi. Yada aşağıda yapacağım ilk örnekde olduğu gibi bir buton aracılığı ile gizli bulunan farklı butonları gösterme gibi. ( Daha sonra ki makalelerimde iç içe datalist kullanarak ufak bir forum uygulaması yapacağız)

Datalist'imi Sqldatasource aracılığı ile dolduruyorum. Aşağıdaki resimde göreceğiniz gibi ID ve şehir isimleri mevcut. Ve en son kolonda da Tıkla beni isimli bir linkButtonumuz var. 

Veriler için herhangi bir kod yazma işleminde bulunmadım. Basit bir uygulama olacağını düşündüğüm için sqldatasource ile erişmeyi uygun gördüm.

Html Tarafında datalist içeriğime 3 sutundan oluşan bir tablo açtım. İlk sutuna <%#Eval(“ID”)%> kavramı ile ID ikinci sutuna Şehir ismi üçüncü sutuna ise bir link button ekledim.

Yanlız burada dikkat etmeniz gereken bir husus var ki html kaynak tarafında linkbutton uma CommandArguement ve CommandName propertylerine kendi değişkenlerime verdim. Buradaki CommandName bizim Datalist ItemCommand eventinde erişeceğimiz isim ve Arguement kısmı ise yine ItemCommanda erişeceğimiz bizim gönderdiğimiz artık ID olur şehir adı olur yada gizli bir değişkende gönderebiliriz.

Örnek :
 <asp:LinkButton ID="BtnTiklat" CommandName="TiklaBeni" CommandArgument='<%#Eval("ID") %>' runat="server">Tıkla Beni</asp:LinkButton>

Html tarafını tamamladıktan sonra Datalistimizin ItemCommand eventine geçiyoruz. Burada yapmamız gereken ufak bir ara kontrol var ki bu kontrolün nedenini açıklayacağım. 

if (e.CommandName == "TiklaBeni")
{
 //Yapacağınız işlemler.
}

Yukarıdaki ara kontrolümüzün nedeni şudur ; Bizler datalistimizde birden fazla ItemCommand’a değer gönderebiliriz. Dolayısı ile verdiğimiz isimleri bir if koşuluna alırsak hangi işlemin nerede yapılacağını belirleyebiliriz.

Kontrolümüzü yaptıktan sonra gelelim datalistimizin içindekibulunan diğer butonları yakalamaya.

        if (e.CommandName == "TiklaBeni")
        {
            int TickID = Convert.ToInt32(e.CommandArgument);
            Button BtnGizli1 = (Button)e.Item.FindControl("BtnGizli1");
            BtnGizli1.Visible = true;

            Button BtnGizli2 = (Button)e.Item.FindControl("BtnGizli2");
            BtnGizli2.Visible = true;
        }

Gördüğünüz gibi koşulumuzun içine TickID ile linkbuttondan gönderdiğim ID alanıma eriştim. Yanlız bu örnekte ID alanımızın herhangi bir yardımı bulunmamaktadır. Burada sadece görmeniz açısından yazdım.

Daha sonra Button ile datalist içinde verdiğim butonumun ismini FindControl ile buluyorum ve çok basit olarak Visible olaylarını aktif ediyorum.

Bu sadece datalist içindekileri  yakalamak için ufak bir örnek oldu.

2. Örneğimiz ise yine yukarıdaki örnekden gideceğimiz ve silme işlemlerini yapacağımız kısım.

Şöyleki yukarıda da bahsettiğm gibi linkbutton CommandName özelliğine kendim bir isim belirlemiştim.

Şimdi bu ismi Sil olarak belirleyelim ve silme işlemlerini nasıl yapacağımızı anlatayım.

Yukarıdaki örnekten yola çıkarsak ; Datalist içindeki linkButtonumuza CommandName özelliğine Sil veriyorum.

<asp:LinkButton ID="BtnTiklat" CommandName="Sil" CommandArgument='<%#Eval("ID") %>' runat="server">Silmek için Tıklayınız</asp:LinkButton>

Yine Datalistimizin ItemCommand olayından yararlanarak ;

        if (e.CommandName == "Sil")
        {
            int SehirD = Convert.ToInt32(e.CommandArgument);
//Veri silme işleminiz
        }


Burada veri silme işleminizi bir class yordamı ile yapar göndereceğiniz id ye ise SehirID yi gönderirsiniz. Class da ise hangi ID ye eşit ise veritabanınızdan silersiniz. Gördünüz mü ne kadar basit?

Umarım yardımcı olabilmişimdir.

Yorum ekle


 

biuquote
  • Yorum
  • Canlı önizleme
Loading



Powered by BlogEngine.NET 1.4.0.0
Theme by Mads Kristensen - Düzenleme ve Uyarlama Hakan COŞAR
Lida Dai Dai Hua Jiao Nang Seo Yarışması(Kerem Arda için eklenmiştir)