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. birdeajax ile de kullanabileceğiniz kullanabileceğiniz dinamik event handler atama işlemine değineceğim.Sayfamıza bir placeholder ekleyelim ve pageload’a gelelimfor(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 = "
“;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 nesneoluşturuyoruz. bu nesnenin click özelliğine kendi yazdığımız tıkla fonksiyonunu atıyoruz. id’sini vetext’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 textinebr 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.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 yerinekullanabiliriz.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 yineSystem.Web.UI.WebControls sınıfından butona çevirmeden direkt kullanamıyoruz.(fonksiyon içindeki ilk kodbunu yapıyor) dugme nesnesine atadık.2. kodda null olmadığından emin olalım her ihtimale karşı önlemimizi alalım. evet artık hangi butonatıklandığını bulmuş olduk. bu butonun text’ini yazdıyoruz. buton id’sindeki tus kelimesini replaceederek de numarasını buluyoruz.bu numara bulma işlemi eğer for değilde bir db’den çekilen kayıtla oluşturulmuş nesnelerde (veritabanındaki kayıt id’si atanmışsa) direkt bize id’yi verir. evet kısa da olsa ajaxla uğraştığımzamanlarda 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 🙂 hersayfaya 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 buradanfaydalanabilirsiniz.