Eylül 03, 2010

Dinamik Olarak Asp Button Eklemek

Asp.Net kontrollerini bazen dinamik olarak eklemek gerekebiliyor.Mesela bir  gridview içerisine "button,label,textbox,gridview..." kontrolünü eklemek gibi ihtiyaçlarımız olabiliyor.Dinamik olarak eklenecek kontrolün "event"i varsa bu ekleme işi biraz daha karmaşıklaşıyor.Kontrolü dinamik olarak eklediğimiz gibi o kontrole event yazmamız da gerekiyor.
Şimdi bir örnekle bu durumu açıklayalım;
Dinamik olarak ekleyeceğimiz kontrol: Asp:button
Buttonun eventi : Click
Kodlarımız;

Dinamik kontrolü yaratıyoruz;
Dim btn As New Button
btn.ID=buton id'si..
btn.CommandArgument=btn.ID
page.form1.Controls.Add(btn) // sayfaya butonu ekliyoruz.
AddHandler btn.Click AddressOf btn_Click
Click olayında tetiklenecek click eventimiz;
private sub btn_Click(ByVal sender as object, ByVal e as EventArgs)
Dim tiklananButton as String
tiklananButton=e.CommandArgument
Response.Write(tiklananButton)
end sub
>>Hangi butona tıklandığını e.CommandArgument ile btn.Id sini alarak belirliyoruz.Tıklanan butona göre farklı işlemler yaptırmak için bunu kullanabiliriz.<<
Dinamik olarak gridview içerisine "button" eklemek için gridview üzerine gelip sağüstte çıkan ">" işaretine tıklayıp "edit columns" ta buton eklenecek kolon seçilip altta bulunan "convert to template item" a tıklayalım.Şimdi tekrar gridview ın sağüstte çıkan ">" işaretine tıklayıp "edit item templates"a tıklayıp orada bulunan label kontrolünü silip yerine button kontrolü ekleyelim.Button kontrolüne bir ID değeri verelim."End template editting" diyerek buradaki işimizi bitirelim.Kod kısmında gridview rowdatabound eventine gelelim.Bu event gridview a satır satır veri işlenirken gerçekleşir.Button kontrolü için işlemimizi burada yapacağız.
Dim btnGrd As New Button =TryCast(e.Row.FindControl("ButtonID"))
btnGrd.ID= " buton idsi "
btnGrd.CommandArgument=btnGrd.ID
AddHandler btn.Click AddressOf btn_Click
...
İşlemi siz isteğinize göre daha da geliştirebilirisiniz.
Yazıyı ezbere yazdığım için bazı kavramlarda eksikler ya da hatalar olabilir.Ancak konu genel itibari ile bu şekilde.

Hiç yorum yok:

Yorum Gönder

System.Text.Json.JsonException hatası - cycle or if the object depth is larger than the maximum allowed depth of 32.

 Eğer .net'te aşağıdaki hatayı alıyorsanız; " A possible object cycle was detected which is not supported. This can either be due t...