Asp.net Data Kontrolleri İçin Event Yönetimi

Bu yazıda Datalist,Gridview ve Repeater gibi data kontrolleri içinde kullandığımız button,imagebutton gibi kontrollerin event yönetimini anlatılmaktadır.(click() vb..)

Merhaba arkadaşlar,

bu yazımda Datalist,Gridview ve Repeater gibi data kontrolleri içinde kullandığımız button,imagebutton gibi kontrollerin event yönetimini anlatacağım.(click() vb..)

Öncelikle aşağıdaki gibi bir veritabanı oluşturalım.



Repeater kullanarak bu verileri sayfada listeleyelim. Sırasıyla Default.aspx ve Default.aspx.cs de yapılan değişiklikler aşağıdaki gibidir.

Default.aspx


Default.aspx.cs


Repeater kontrolümüzü veritabanından doldurduk. Gördüğünüz gibi Repeater'a iki adet buton ekledim. Şimdi bunlara ulaşalım ve tıklandığı zaman ne yapılması gerektiğini yazalım. Aslından bu yazıda anlatılmak istenen burada başlıyor. Biz Repeater kontrolünün itemtemplate'ine 2 adet buton koyduk. Her satırda basılan butona, o satırın id'si ile işlem yaptıracağız.

Bunu gerçekleştirebilmemiz için kullanmamız gerek event, Repeater kontrolümüzün Item_Command Event'ıdır. Default.aspx sayfamızda Design kısmındayken, Repeater kontrolünü seçelim sırasıyla Sağ Tuş>Properties, açılan pencerede Events sekmesine geçelim ve Item_Command Event'ına çift tıklayalım. Codebehind kısmında kodlarımızı yazmaya başlayalım.

Burada hatırlatmam gereken ufak bir şey var. Item Command Event'ında butonların eventlarını yakalayabilmemiz için CommandName ve CommandArgument özelliklerini kullanacağız. Aşağıdaki gibi her bir butona CommandName ve CommandArgument tanımlayalım. Id'ye göre işlem yapacağımız için CommandArgument'i id olarak tanımlıyoruz.



Tanımlamamızı yaptıysak. Codebehind kısmına geçip kodlarımızı yazabiliriz.



Yaptığımız tam olarak şu. Eğer bastığımız butonun CommandName'i Delete ise silme işlemini yaptırıyoruz. Sadece ilgili satırı sildirmek için de daha önce buton üzerinden tanımladığımız CommandArgument i kullanıyoruz. CommandArgument'e id değerini atadığımız için sadece butonun yer aldığı ilgili satır silinecektir. Aynı şekilde Detay butonuna da işlev kazandıralım. Butona tıklandığında detay.aspx sayfasına gitsin ve ilgili haberin detayını bize göstersin. Bunun için gerekli kod da aşağıdaki gibi olacak;



Buradan sadece yönlendirmeyi yapıyoruz. Detaylandırmayı detay.aspx sayfasında, sayfamıza yollanan id parametresini kullanarak yapacağız. Şimdi detay.aspx sayfasını oluşturalım ve bir adet label ekleyelim. Page Load kısmına aşağıdaki kodlarımızı yazarak, ilgili label i dolduralım.



Ufak bir şey atlamışım ona değinmeden geçmeyeyim. Butonlara bastığımızda postback olacağından, page load olayı tekrar tetiklenir. Bu da hata almamıza neden olabilir. Buna önlem olarak page load olayındaki kodlarımızı postback olduğunda çalışmamasını sağlarsak hata ortadan kalkacaktır. Bunu sağlayan kodumuz aşağıdaki gibidir;



Basit de olsa yararlı olacağını düşündüğüm bir bilgi daha vermek istiyorum. Sil butonuna basıldığı zaman bize bir uyarı penceresi gösterilsin. Bu sayede projemiz daha kullanışlı olur. Bunun için butonun onClientClick özelliğini aşağıdaki gibi düzenlememiz yeterli olacaktır.



Çıkan uyarı ekranında 'Tamam' butonuna basıldığında silme işlemi gerçekleşir. Silme işlemi gerçekleştikten sonra Repeater'ı da güncelleyelim. Bunun için page load'da repeater'ı doldurmak için kullandığımız kodlarımızı doldur() isimli bir metod haline getirelim ve bunu silme işlemini gerçekleştirdiğimiz if bloğu içerisinde en altta tetikleyelim. Bütün bu yaptıklarımızı diğer data kontrolleri üzerinde de aynen uygulayabilirsiniz. Ben sadece repeater üzerinden anlattım.

Sonuç olarak yaptıklarımızı kısaca özetlersek;
Bu yazıda, Gridview,DataList,Repeater gibi asp.net data kontrolleri içersine manuel olarak eklediğimiz asp.net kontrollerine ulaşıp, bu kontrollerle sadece bulunduğu satır üzerinde işlem yaptırmayı ve karşılaşabileceğimiz muhtemel hataların çözümlerine değindik.


  • Etiketler;
Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

gerçekten faydalı bilgiler var, eline sağlık
kardeşim sırf sana teşekkür etmek için üyelik açtım. kaç gündür uğraştığım bir şeyi makalen sayende buldum. Allah razı olsun... Bilginin sadakasını verdin :)
Değerli arkadaşım; Verdiğin bilgiler çok işime yaradı.Bu işte yeniyim ve çoktandır kafamın almadığı bi mevzuyu senin anlatımın üzerinden gidip entity framework ile başarıyla projeme uygulayabildim.Çok şükür. Sana da teşekkür ederim. Çok değerli bir çalışma olmuş bir önceki yorumcu Snc_ \'nin de dediği gibi sırf sana teşekkür için siteye üye oldum ve daha sıkı takip etmeyi düşünüyorum. Bu konuyu tüm yeni arkadaşlara tavsiye ederim.Temiz bir anlatım olmuş.
Valla allah senden razı olsun abim kac gündür uğraşıyorum araştırdım bulamadım bulduklarım olmadı valla saolasın.

Yukarı Git