pillinetwork hesabınızla giriş yapın.

Asp.net Dinamik event handler ve Dinamik Kontroller

Merhaba arkadaşlar. kısa olmasına karşın çok pratik bir kod paylaşacağım.
Bu kodda asp.net kontrollerini dinamik oluşturacağız. ama sırf bunu anlatmak için açmadım konuyu. birde

ajax ile de kullanabileceÄŸiniz kullanabileceÄŸiniz dinamik event handler atama iÅŸlemine deÄŸineceÄŸim.

Sayfamıza bir placeholder ekleyelim ve pageload'a gelelim

1
2
3
4
5
6
7
8
9
10
11
12
13
14
for(int i=1;i<10;i++)
{
Button tus = new Button();
tus.Click += new System.EventHandler(this.tikla);
tus.ID = "tus" + i.ToString();
tus.Text = "Tus " + i.ToString();
PlaceHolder1.Controls.Add(tus);
Literal lt = new Literal();
lt.Text = "<br />";
lt.ID = "lit" + i.ToString();
PlaceHolder1.Controls.Add(lt);
}

kodumuz yukarıda biraz açıklayacak olursak. for döngümüz içinde buton sınıfından bir nesne

oluşturuyoruz. bu nesnenin click özelliğine kendi yazdığımız tıkla fonksiyonunu atıyoruz. id'sini ve

text'ini fordaki i değişkenimizle, sıralı oalcak şekilde atıyoruz (tus1,tus2..) evet butonumuz oluştu.

şimdi bunu sayfamızda görebilmek için placeholder nesnemize atalım.

2. bölümde aynı işlemleri literal için yapıyoruz. alt satıra atmak için literal textine
br atıyoruz.hiç dinamik kontrol kullanmayanlara örnek olması için. bir de literal oluşturdum.

Şimdi fonksiyonumuza geçelim. bu fonksiyon yukarıda butonlara atadığımız kendi yazacağımız fonksiyon.

static butonlarda butona çift tıklayınca çıkan onclick fonksiyonundan pek farklı değil.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
protected void tikla(object sender, EventArgs e)
{
System.Web.UI.WebControls.Button dugme = sender as System.Web.UI.WebControls.Button;
if (dugme != null)
{
Response.Write(dugme.Text+" basıldı");
//buton numarasını alabiliriz. veri tabanındaki id'yi atadıysak querystring yerine
kullanabiliriz.
int id = Convert.ToInt32(dugme.ID.Replace("tus",""));
}
}

kısaca açıklayacak olursak.normal click fonksiyonundan farklı olarak biz bu fonksiyonu for döngüsü

içinde 10 tane butona atatık. ve hangi butona tıklandığına ilişkin bir kod yazacağız fonksiyona.

sender objnesnesizim butonumuzu temsil ediyor bu zaten static fonksiyonlarda da var. ama bunu yine

System.Web.UI.WebControls sınıfından butona çevirmeden direkt kullanamıyoruz.(fonksiyon içindeki ilk kod

bunu yapıyor) dugme nesnesine atadık.

2. kodda null olmadığından emin olalım her ihtimale karşı önlemimizi alalım. evet artık hangi butona

tıklandığını bulmuş olduk. bu butonun text'ini yazdıyoruz. buton id'sindeki tus kelimesini replace

ederek de numarasını buluyoruz.

bu numara bulma işlemi eğer for değilde bir db'den çekilen kayıtla oluşturulmuş nesnelerde (veri

tabanındaki kayıt id'si atanmışsa) direkt bize id'yi verir. evet kısa da olsa ajaxla uğraştığım

zamanlarda geliştirdiğim bana çok kolaylık sağlamış bir koddur.

Ajaxla uğraşanlar bilirler request işlemlerini kullanmak istediğimizde başımız belaya girer :) her

sayfaya query string de gönderemeyiz. çünkü yenilenmemesi gerekir.yada link olması gerekir.

işte bu gibi durumlarda bu kod kurtarıcınız olacakatır.
id göndermeden işlem yapmak isterseniz. yine server ve asp.net tabanlı güzel bir çözümdür.

aynı zamanda birden çok butonu tek fonksiyondan kontrol etmek isterseniz yine buradan

faydalanabilirsiniz.

Spacer
Spacer
/* vectro yazdı. 02 Mart 2009 12:40. 0 yorum var */

üye olunpillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.

Bu Yazıyı Tutanlar

Bu yazıyı rapor et. Kural dışı içeriğe rastladığınızda editörlerimize rapor ederek müdahale edilmesini sağlayabilirsiniz. (Hangi durumlarda rapor edebilirim?)

Bu site

Nokta ve pilli ortak yapımı olan kodaman.org kolektif bir kod yazarları blogudur. Siz de katılabilirsiniz.

son yorumlar

arama

pillinetwork