2009-04-27 26 views
6

çalışmıyor Bir UserControl bir MultiView denetimi olan bir görünüm dinamik olarak yükleyin. UserControl bir olay işleyicisi eklese de, etkinlik hiçbir zaman patlamaz.UserControl olay işleyicisi

Burada nelerin eksik? Teşekkürler!

İçeren ASPX sayfası:

protected override void OnPreRender(EventArgs e) 
{ 
    if (MultiView1.ActiveViewIndex == 2) //If the tab is selected, load control 
    { 
     Control Presenter = LoadControl("Presenter.ascx"); 
     (MultiView1.ActiveViewIndex.Views[2].Controls.Add(Presenter); 
    } 
    base.OnPreRender(e); 
} 

Presenter.ascx.cs

override protected void OnInit(EventArgs e) 
{ 
    Retry.Click += this.Retry_Click; //This is a .Net 2.0 project 
    base.OnInit(e); 
} 


protected void Retry_Click(object sender, EventArgs e) 
{ 
    //This never fires 
} 

cevap

8

Denetimin sayfanızın prerender olayına yüklenmesinden dolayı ateşlemediğini düşünüyorum. Geri gönderildikten sonra, kontrol kaybediliyor çünkü bunun için görünüm durumu yok. Bu yüzden etkinliğini ateşlemek için bir kontrol yoktur. Denetimi sayfanın init olayına yüklemeyi deneyin. Ne olduğunu bize bildirin!

+0

O kadardı. Teşekkürler! OnPreInit'te MultiView1.ActiveViewIndex ayarlanmadığı için If ifadesini de kaldırmam gerekiyordu. –

+0

size bekliyoruz. –

+0

Çok teşekkür ederim! –

1

O ben dışarı alacaktı, her geri göndermeden sonra kontrol ekleniyor değil gibi geliyor Sorunun giderilip giderilmediğini görmek için içeren aspx sayfasında ifade varsa ... Retry bir düğme olduğu varsayılıyor mu?

+0

Zaten If ifadesini kaldırmayı denedim - fark yok. Evet, Yeniden Dene bir tuştur. –

6

Geri gönderim olayı ele alma, işleme koymadan önce yapılır, böylelikle durum, kasanızdaki sayfada bulunmaz.

yaşam döngüsü olayları

bu sırada ateş edilir (atlanır birkaç):

  1. Init
  2. Yük
  3. PreRender
  4. Boşalt

Ve olay işleme arasındaki yapılır Load and PreRender (bazı olayların sayfanın işlenme şeklini değiştirmesi durumunda, mantıklıdır).

Yalnızca, Yeniden Dene denetimini Yük veya Başlangıç ​​olarak yükleyen kodunuzu taşıyın.

Referans: Asp.Net Page Life Cycle Overview

2

kontrol OnPreRender olay girmek edebilmek için başlangıçta görünür olması gerekir. ama belki de görünmez olmasını istiyorsun. EnableViewState = false;

İlgili konular