c# - Trouble with FindControl and dynamicly created controls -
उदाहरण कोड:
var div = new HtmlGenericControl ("div"); Div.Controls.Add (नया लीटरल () {ID = "litSomeLit"}); Var लीटर = (लिटल) div.FindControl ("litSomeLit"); Assert.IsNotNull (जलाया);
यह कोड जोर में विफल रहता है, क्योंकि रोशनी शून्य है। डिबगिंग दिखाता है कि div.Controls निश्चित रूप से "litSomeLit" की आईडी के साथ एक शाब्दिक है। मेरे सवाल हैं "क्यों?" और "क्या डिवेल के बारंबार खोज के बिना एक विशिष्ट आईडी पर नियंत्रण पाने का कोई तरीका है। नियंत्रण एक बार में एक तत्व द्वारा []?"
इसका कारण यह है कि मैं इस तरह से बातें कर रहा हूं यह है कि मेरा वास्तविक अनुप्रयोग इतना सरल नहीं है- एक विधि जो मैं लिख रहा हूँ कई कॉन्फ़िगरेशनों में कई subcontrols के साथ एक जटिल नियंत्रण दिया गया है। मुझे एक विशिष्ट नियंत्रण तक कई परतों तक पहुंचने की आवश्यकता है (उदाहरण के लिए, आईडी "txtSpecificControl" के साथ नियंत्रण StartControl.Controls [0] पर हो सकता है। नियंत्रण [2] .नियंत्रण [1] .नियंत्रण [3] )। आम तौर पर मैं
FindControl ("txtSpecificControl")
कर सकता था, लेकिन यह तब काम करने के लिए प्रतीत नहीं होता जब नियंत्रण केवल गतिशील रूप से बनाया गया था (जैसा कि ऊपर दिए गए कोड में है)।
जितना मैं बता सकता हूं, पेज पर नियंत्रण को जोड़ने के बिना मैं जो करने की कोशिश कर रहा हूं, उसका कोई रास्ता नहीं है। यदि मुझे अनुमान लगाना पड़ता है, तो मैं कह सकता हूं कि FindControl नियंत्रण की अनन्यआईड प्रॉपर्टी का उपयोग करता है, जो आम तौर पर मौजूदा एक (जैसे बाह्य नियंत्रक आईडी $ LowerControlId $ TargetControlID) के ऊपर मौजूद सभी नियंत्रणों की आईडी शामिल करता है। यह केवल तभी मिलेगा जब नियंत्रण वास्तव में पृष्ठ में जोड़ दिया जाएगा।
फिर भी, रिकर्सिव गहराई का एक कार्यान्वयन है- पहले खोज FindControl जो कि तब तक काम करेगा जब नियंत्रण पृष्ठ पर अभी तक संलग्न नहीं है:
<प्री> सार्वजनिक स्थिर नियंत्रण FindControl (नियंत्रण अभिभावक, स्ट्रिंग आईडी) {foreach (अभिभावक में नियंत्रण नियंत्रण। नियंत्रण) {if (control.ID == id) {return control; } Var childResult = FindControl (नियंत्रण, आईडी); अगर (childResult! = नल) {बच्चे रिटर्न वापसी; }} वापसी नल; }
Hi, Great.. Tutorial is just awesome..It is really helpful for a newbie like me.. I am a regular follower of your blog. Really very informative post you shared here. Kindly keep blogging. If anyone wants to become a .Net developer learn from Dot Net Training in Chennai.
ReplyDelete