2009-10-30 18 views
9

वेब हिस्सा जीवन चक्र described इस तरह है:पोस्टबैक पर ऑनलोड/CreateChildControls ऑर्डर क्यों बदलता है?

पृष्ठ लोड पर

  1. निर्माता
  2. OnInit
  3. OnLoad
  4. अगर वेब हिस्सा कनेक्शन है
  5. ConnectionConsumer विधि कहा जाता है
  6. CreateChildControls ...

1 पोस्टबैक पर (PostBack क्लिक हैंडलर सेट सार्वजनिक संपत्ति के माध्यम से ViewState)

  1. निर्माता
  2. OnInit
  3. CreateChildControls
  4. OnLoad
  5. PostBack क्लिक से निपटने ...
,210

2 पोस्टबैक पर

  1. निर्माता
  2. OnInit
  3. LoadViewState
  4. CreateChildControls
  5. OnLoad ... (PostBack क्लिक हैंडलर सार्वजनिक संपत्ति के माध्यम से ViewState सेट)

जैसा कि आप सी ऑनलोड और CreateChildControls उनके ऑर्डर को बदलते हैं। यह मेरे कोड में कुछ कठिनाइयों को प्रस्तुत करता है क्योंकि मुझे ऑनलोड लोड तत्व में विभिन्न डेटा एकत्र करने की आवश्यकता होती है।

क्या कोई कारण है कि पोस्ट बैक चरण में ऑर्डर क्यों बदला गया है?

उत्तर

14

जब भी ढांचा (या स्वयं) EnsureChildControls विधि को कॉल करता है तो CreateChildControls को कॉल किया जाता है। जब भी आपको वहां होने के लिए बाल नियंत्रण की आवश्यकता होती है तो इस विधि को बुलाया जाना चाहिए।

ढांचे के मामले में यह ऑनइनिट और ऑनलोड के बीच पोस्ट किए गए मान सेट करना चाहता है (ताकि आप ऑनलोड के दौरान मानों तक पहुंच सकें)। क्योंकि इसे करने के लिए इसे नियंत्रण की आवश्यकता है, यह आपके लिए EnsureChildControls को कॉल करेगा।

यदि कोई पोस्टबैक नहीं है, तो मूल्यों को सेट करने की कोई आवश्यकता नहीं है और इस प्रकार एनसुर चिल्डकंट्रोल को कॉल तब तक इंतजार करेगा जब तक ढांचे को नियंत्रण की आवश्यकता न हो। यह ऑनलोड और ऑनपेरेंडर के बीच होता है।

+0

यह एक अच्छा जवाब है। – spa

-4

ऐसा नहीं होना चाहिए, क्या आप पूरी तरह से सुनिश्चित हैं? क्या कोई अन्य थ्रेड चल रहा है जो ऐसा लगता है कि ऑर्डर बदल गया है?

यह केवल एक कंप्यूटर द्वारा निष्पादित एक प्रोग्राम एएसपी.नेट के बाद होता है (जिसका अर्थ है कि इसे हमेशा एक व्यक्ति के विपरीत, चीजों को हमेशा करना चाहिए)।

+0

हाँ मुझे यकीन है ... :-( – spa

+0

यह कुछ भी नहीं है जो मैं स्वयं आया था। यह विभिन्न ब्लॉग पोस्ट में वर्णित है (प्रश्न में लिंक देखें)। मैंने इसे डीबगर के साथ सत्यापित किया। – spa