Her şeyden önce, sorumun yinelenen bir kopyası varsa özür dilerim, ama çok fazla aradım ve çözümü bulamıyorum. Senaryoda bir UserControl var. Bu kullanıcı denetimi, verilen List '>> 0 ise dinamik olarak ListBox'lar yaratacaktır. Kontroller dinamik olarak eklenir, bunları eklemenin bir problemi yoktur, ancak olay işleyicisi eklenmez. İlk listBox'ta bir öğe seçtiğimde, secondListBox dinamik olarak eklenir ve öğeler de dinamik olarak eklenir. İlk liste kutusu görünür, ancak selectedIndexChanged olay işleyicisi çalışmaz. Kodumda sorun ne olabilir?Dinamik olarak eklenmiştir ListBox'ın EventHandler'ı ASP.Net üzerinde ateş açmıyor
DÜZENLEME: Ben
li.Attributes.Add("onselectedindexchanged","selectedIndexChanged");
veya
li.AutoPostBack = true;
ama yine tetiklenmediğini
...private List<string> myList = new List<string>() { "Serkan", "Kadir" };
private List<string> mySecondList = new List<string>() { "Istanbul", "Ankara" };
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (myList.Count > 0)
{
ListBox li = new ListBox();
li.ID = Guid.NewGuid().ToString();
li.SelectedIndexChanged += new EventHandler(this.selectedIndexChanged);
foreach (string item in myList)
{
li.Items.Add(item);
}
this.Controls.Add(li);
}
}
}
private void selectedIndexChanged(object sender, EventArgs e)
{
ListBox li2 = new ListBox();
li2.ID = Guid.NewGuid().ToString();
foreach (string item in mySecondList)
{
li2.Items.Add(item);
}
this.Controls.Add(li2);
}
tüm şeyleri kaçırıyorsunuz. Bu kontroller manuel olarak eklenir. Lütfen sorumu dikkatle okuyun, kontroller dinamik olarak eklenecektir (bu, N sayı liste kutusu olacak demektir) ve olay işleyicileri de. Manuel olarak ekliyor ve görünürlüğü değiştiriyorsunuz. Üzgünüm, ama bu benim sorumun cevabı değil. –
Üzgünüm, yapmaya çalıştığım nokta, Controls koleksiyonunun Sayfa'nın belirli bir örneğine ait olmasıdır. Sunucudan bir sayfa talep ettiğinizde, yeni bir örnek oluşturulur, yani, artık mevcut olmayan sayfanın önceden oluşturulmuş bir örneğine eklediğiniz denetimler hakkında hiçbir şey bilmiyor. – RichardW1001
ASP.net HTML üretir, HTML'de "görünürlük" yoktur. Bu yaklaşımı önerdiğim nedeni, yönteminizle aynı HTML biçimlendirmesini oluşturacak olması, ancak post-back üzerinde çalışacak olmasıdır. Ne görünür = false ASP.net'e herhangi bir HTML oluşturmamasını söyler. Önemli fark, kontrolün, Page/UserControl'ün her bir örneğinde kayıtlı olması ve bu nedenle, eklediğiniz kontrollerin geri gönderim üzerinde çalışmayacağı olaylar vb. Ile kullanım için geçerli olmasıdır, çünkü bunlar yalnızca önceki bir örnekte var olurlar. artık yok. BTW orijinal sorunuz değişken sayıda seviyesinden bahsetmiyor. – RichardW1001