2011-09-12 15 views
8

संबंधित प्रश्न: Get All Web Controls of a Specific Type on a Pageपेज लोड पर प्रीरेंडर का उपयोग कब करें?

सवाल इसके बाद के संस्करण मैंने पूछा कि कैसे मैं सभी नियंत्रण प्राप्त कर सकते हैं, एक आकर्षण की तरह काम करता है, लेकिन कुछ अभी काफी फिट इसलिए मैंने सोचा कि यह मेरे हो सकता है नहीं करता है। मेरे पास निम्न कोड है लेकिन यह पृष्ठ पर नियंत्रणों में हेरफेर नहीं कर रहा है लेकिन मेरे सिद्धांत में इसे काम करना चाहिए।

List<DropDownList> allControls = new List<DropDownList>(); 
ControlEnhancer.GetControlList<DropDownList>(Page.Controls, allControls); 

foreach (DropDownList childControl in allControls) 
     { 
      foreach (ListItem li in childControl.Items) 
      { 
       li.Attributes.Add("title", li.Text); 
      } 

      childControl.Attributes.Add("onmouseover", "this.title=this.options[this.selectedIndex].title"); 
     } 

कोड Thats, GetControlList() कोड आप संबंधित सवाल जो दिखाता है कि कैसे यह सब नियंत्रण अपने बस मेरी हेरफेर हो जाता है, से प्राप्त कर सकते हैं। मैं सभी ड्रॉपडाउन सूची सूची प्राप्त करने की कोशिश कर रहा हूं और उन्हें एक शीर्षक जोड़ सकता हूं ताकि मेरे पास टूलटिप हो।

यह आईई 8 के लिए एक त्वरित फिक्स है और नीचे ड्रॉप बॉक्स में लंबे पाठ के कटौती।

+0

मूल प्रश्न नियंत्रण की सूची प्राप्त करता है, इस सवाल को मुझे ड्रॉपडाउनलिस्ट नियंत्रण प्राप्त करने और उन्हें कुशल बनाने की आवश्यकता है जैसे कि मैं टेक्स्ट विशेषता जोड़कर ऊपर की कोशिश कर रहा हूं। – Anicho

+0

अपडेट: ऐसा लगता है कि समस्या कोड के साथ अधिक नहीं है, यह तब तक निष्पादित नहीं हो रहा है जब तक कि मैं पेज पर एक पोस्टबैक को मजबूर नहीं करता हूं, समस्या अलग-अलग है, जल्द ही उत्तर पोस्ट करेगा। – Anicho

+0

क्या यह पृष्ठ लोड में चल रहा था, इसे प्रीरेंडर ईवेंट में चलाने के लिए आवश्यक था। – Anicho

उत्तर

8

Page_Load अक्सर बहुत जल्द होता है; Page_PreRender पृष्ठ के HTML को वास्तव में ब्राउज़र के लिए प्रस्तुत करने से पहले आखिरी पल है और कई मामलों में उपयोगकर्ता नियंत्रणों पर विशेषताओं को सेट करने के लिए सबसे अच्छी जगह है।

इसका कारण यह है वेब फार्म (पेज) जीवन चक्र के दौरान वहाँ पेज में अन्य घटनाओं रहे हैं (और पेज में निहित उपयोगकर्ता नियंत्रण ... में) जो कभी कभी निकालें/बदलें/(वास्तव में ) के ऊपर लिख उन विशेषताओं तो एक ही तरीका है कि आप ब्राउज़र के लिए उन विशेषताओं प्राप्त कर सकते हैं के बाद अन्य सभी के जीवन चक्र की घटनाओं निकाल दिया गया है और संभाला, Page_PreRender.

+2

अच्छा जवाब मैं सभी को पढ़ने की सिफारिश करता हूं: http://msdn.microsoft.com/en-us/library/ms178472.aspx एएसपीनेट पृष्ठ जीवन चक्र को बेहतर ढंग से समझने के लिए। – Anicho

+3

"पेज_PreRender पृष्ठ के HTML को वास्तव में प्रस्तुत करने से पहले आखिरी पल है" - सच नहीं है, बाद में ईवेंट 'प्रीरेंडरकंपलेट' और 'सेवस्टेट कॉम्प्ले' हैं। मेरा जवाब देखें – Joe

8

असल में उन्हें संलग्न करने के लिए है, यहां तक ​​कि PreRender भी कुछ मामलों में जल्दी हो सकता है (उदाहरण के लिए DataSourceID का उपयोग करने वाले नियंत्रणों के डाटाबेसिंग के दौरान आप नियंत्रण पेड़ में DropDownList नियंत्रण जोड़ सकते हैं)।

  • PreRenderComplete:

    दो और घटनाओं है कि अधिक उपयुक्त हो सकता है कर रहे हैं। इस बिंदु पर, सभी नियंत्रण बनाए जाते हैं और पृष्ठ प्रस्तुत करने के लिए तैयार है।

  • SaveStateComplete। देखने के बाद राज्य और नियंत्रण राज्य बचाया गया है। आपके द्वारा यहां किए गए कोई भी परिवर्तन राज्य को देखने के लिए जारी नहीं रहेंगे।

अपने उदाहरण में (क्लाइंट-साइड विशेषताएं जोड़ना), मैं SaveStateComplete घटना का उपयोग अनावश्यक दृश्य राज्य ब्लोट से बचने के लिए चाहते हैं।

+0

उत्तर में सक्रिय रूप से सुधार करने के लिए धन्यवाद। धन्यवाद। – Anicho

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