2009-11-04 14 views
8

जब उपयोगकर्ता नियंत्रण पृष्ठ पृष्ठ चक्र में प्रोग्रामक रूप से उपयोगकर्ता नियंत्रण जोड़ते हैं, तो उपयोगकर्ता नियंत्रण पृष्ठ के जीवन चक्र में, क्या यह अपने उप-नियंत्रण को अपने व्यूस्टेट के साथ प्रारंभ करता है?एएसपी.नेट: व्यूस्टेट और प्रोग्रामेटिक रूप से उपयोगकर्ता नियंत्रण जोड़ना

मैं इस सवाल से पूछ रहा हूं क्योंकि मेरे उपयोगकर्ता नियंत्रण में से एक प्रोग्राम प्रोग्रामिक रूप से लोड किया जा रहा है, जिसमें टेक्स्टबॉक्स नियंत्रण है जिसे पेजबलोड ईवेंट पर पोस्टबैक पर इसके व्यूस्टेट द्वारा प्रारंभ/लोड नहीं किया जा रहा है (जो नियमित रूप से मामला नहीं है। एएसपीएक्स पेज और इसलिए मेरा भ्रम)। कुल मिलाकर, मुझे टेक्स्टबॉक्स नियंत्रण से मूल्यों को पुनर्प्राप्त करने की आवश्यकता है।

धन्यवाद

उत्तर

11

ViewState Page_Load घटना से पहले भरी हुई है। यदि आप व्यूस्टेट के साथ अपना नियंत्रण काम करना चाहते हैं, तो आपको इसे लोड करना होगा और उस ईवेंट से पहले पेज पर इसे — से पहले प्रीइनेट पर जोड़ना होगा।

जीवन चक्र संदर्भ यहाँ है:

इस घटना का उपयोग करता है, तो आप अपने पृष्ठ पर प्रसंस्करण प्रदर्शन करने की जरूरत है:
http://msdn.microsoft.com/en-us/library/ms178472.aspx?ppud=4

Pre Load घटना है, जो तुरंत पृष्ठ लोड के पहले आता है के लिए वर्णन पढ़ें या लोड घटना से पहले नियंत्रण।

पृष्ठ उदाहरण से पहले इस घटना को बढ़ाता है, यह स्वयं के लिए दृश्य स्थिति लोड करता है और सभी नियंत्रण, और फिर अनुरोध उदाहरण के साथ शामिल किसी भी पोस्टबैक डेटा को संसाधित करता है।

इस प्रकार प्री लोड समय से पहले से ही बहुत देर हो चुकी है। साथ ही, प्रीइनिट ईवेंट के विवरण में विशेष रूप से उल्लेख किया गया है कि यह "गतिशील नियंत्रण बनाने या फिर से बनाने" की जगह है।

+0

धन्यवाद! संबंधित नोट पर, उपयोगकर्ता नियंत्रण जो मैं प्रोग्रामेटिक रूप से जोड़ रहा हूं, दूसरे उपयोगकर्ता नियंत्रण में होता है जिसे घोषणात्मक रूप से लोड किया जा रहा है। यह घोषित माता-पिता उपयोगकर्ता-नियंत्रण की प्रीइनेट घटना को निकाल दिया नहीं जाता है (इसलिए विधि 'संरक्षित शून्य पृष्ठ_PreInit (ऑब्जेक्ट प्रेषक, EventArgs e)' नहीं कहा जाता है)। क्या आपको पता है कि इस घोषित उपयोगकर्ता-नियंत्रण में पेज_PreInit क्यों नहीं बुलाया जाता है? – burnt1ce

+0

नियंत्रण में स्वयं प्री-इनिट नहीं है, क्योंकि पेज से नियंत्रण पृष्ठ लाइफसाइक्ल ईवेंट को कॉल किया जाता है और प्रीइनेट बिंदु पर नियंत्रण अभी तक तैयार नहीं हैं। इसके बजाय इनिट का प्रयोग करें। –

+0

बहुत बहुत धन्यवाद। आपके सुझाव ने मुझे बचाया। =) – burnt1ce

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