2009-04-27 16 views
6

फायरिंग नहीं करता है। मैं एक दृश्य में उपयोगकर्ता नियंत्रण को गतिशील रूप से लोड करता हूं जो मल्टीव्यू नियंत्रण में है। यद्यपि UserControl एक ईवेंट हैंडलर जोड़ता है, फिर भी घटना कभी नहीं होती है।उपयोगकर्ता कंट्रोल का इवेंट हैंडलर

मुझे यहां क्या याद आ रही है? धन्यवाद!

युक्त ASPX पेज:

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 
} 

उत्तर

8

मुझे लगता है कि यह फायरिंग नहीं है क्योंकि आप अपने पृष्ठ के प्रीरेंडर ईवेंट में नियंत्रण लोड कर रहे हैं। पोस्टबैक पर, नियंत्रण खो जा रहा है क्योंकि इसके लिए कोई दृश्य स्थिति नहीं है। इसलिए इसकी घटना को आग लगाने के लिए कोई नियंत्रण नहीं है। पृष्ठ की init घटना में नियंत्रण लोड करने का प्रयास करें। हमें बताना क्या होता है!

+0

वह था। धन्यवाद! मुझे ऑन कथन को भी हटा देना पड़ा क्योंकि OnPreInit पर, MultiView1.ActiveViewIndex सेट नहीं है। –

+0

आपका स्वागत है। –

+0

बहुत बहुत धन्यवाद! –

1

यह मैं बाहर ले जाएगा लगता है प्रत्येक वापस पोस्ट करने के बाद की तरह नियंत्रण नहीं जोड़ा जा रहा है, अगर एएसपीएक्स पेज में स्टेटमेंट देखने के लिए कि क्या यह समस्या हल करता है ... मुझे लगता है कि पुनः प्रयास एक बटन है?

+0

मैंने पहले से ही अगर कथन को हटाने का प्रयास किया था - कोई फर्क नहीं पड़ता। हां, पुनः प्रयास एक बटन है। –

6

पोस्टबैक ईवेंट हैंडलिंग प्रतिपादन से पहले किया जाता है ताकि आपके मामले में पृष्ठ में नियंत्रण मौजूद न हो।

जीवन चक्र की घटनाओं इस क्रम में निकाल दिया जाता है (छोड़ दिया कुछ):

  1. Init
  2. लोड
  3. पूर्वप्रस्तुत
  4. अनलोड

और घटना से निपटने के बीच किया जाता है लोड और प्रीरेंडर (यदि कुछ घटनाएं पृष्ठ को प्रस्तुत करने के तरीके को बदलती हैं, तो यह समझ में आता है)।

तो बस अपना कोड ले जाएं जो लोड या इनट पर पुनः नियंत्रण नियंत्रण लोड करता है।

संदर्भ: Asp.Net Page Life Cycle Overview

2

नियंत्रण प्रारंभिक दृश्यमान OnPreRender स्थिति में प्रवेश करने के लिए सक्षम होने के लिए होना चाहिए। लेकिन शायद आप इसे अदृश्य होना चाहते हैं। सुनिश्चित करें कि सक्षमViewState = false;

संबंधित मुद्दे