मैंने एक कस्टम नियंत्रण विकसित किया है जो ListBox को बढ़ाता है। विचार यह है कि नियंत्रण अपने तत्वों में 'याद करता है' संशोधन जो क्लाइंट-साइड हुआ, उदा। एक AJAX अनुरोध के परिणामस्वरूप।एएसपी.नेट कस्टम नियंत्रण: लोडपोस्टडाटा() कब कहा जाता है?
जिस तरह से यह काम करता है वह यह है कि नियंत्रण एक छिपी हुई इनपुट भी प्रस्तुत करता है, और AJAX अनुरोध का परिणाम छुपा इनपुट में संग्रहीत होता है। यह वापस पोस्ट किया गया है, और नियंत्रण की LoadPostData() विधि छिपी हुई इनपुट की तलाश करती है, और यदि छिपे हुए इनपुट में डेटा है, तो इससे ListItem संग्रह बनाता है।
यह इतने लंबे समय के रूप में उपयोगकर्ता सूची बॉक्स से चयन किया गया है पूरी तरह से काम करता है। यदि वे नहीं हैं, तो LoadPostData() विधि को कॉल नहीं किया जाता है, और इसके परिणामस्वरूप नया ListItem संग्रह नहीं बनाया जाता है। (मैंने डीबगर का उपयोग करके इसे स्थापित किया है।)
मुझे लगता है कि लोडपोस्टडाटा विधि केवल तभी कॉल की जाती है जब POST डेटा संग्रह में नियंत्रण के अद्वितीय आईडी (यानी 'नाम' HTML में विशेषता) शामिल डेटा शामिल होता है। यदि उपयोगकर्ता ने सूची बॉक्स से कोई चयन नहीं किया है, तो सूची बॉक्स के अनन्य आईडी और लोडपोस्टडाटा() के लिए पोस्ट डेटा में कुछ भी शामिल नहीं है। क्या वो सही है?
क्या कोई सुझाव दे सकता है कि मैं यह सुनिश्चित कर सकता हूं कि मेरी कस्टम लिस्टबॉक्स की लोडपोस्टडाटा() विधि को प्रत्येक पोस्टबैक कहा जाता है चाहे उपयोगकर्ता ने चयन किया हो या नहीं?
अग्रिम धन्यवाद - मैं वास्तव में इस के साथ अटक गया हूं।
डेविड
यह बिल्कुल भी अजीब यह काम करता है कि केवल जब एक आइटम का चयन किया जाता है। LoadPostData() विधि केवल तभी कॉल की जाती है जब पोस्टडाटा में एक ही नाम वाला एक आइटम होता है जो नियंत्रण के अद्वितीय आईडी के रूप में होता है - जो तब नहीं होगा जब उपयोगकर्ता ने कोई आइटम नहीं चुना हो। – David
वैसे मेरी पहली प्रतिक्रिया यह थी कि जब मैंने इसे लिखना शुरू किया तो यह अजीब लगा! :) क्या आपने रेंडरकंट्स में डमी फ़ील्ड जोड़ने का प्रयास किया था? इस तरह LoadPostData हमेशा कॉल किया जाएगा। –
नियंत्रण के अद्वितीय आईडी के समान नाम विशेषता वाले 'नकली' तत्व बनाने के बारे में आपके सुझाव के लिए धन्यवाद। मैं देखता हूं कि आपका क्या मतलब है। मेरे दिमाग में यह उतना ही साफ नहीं है जितना मैंने पेश किया है। तुम क्या सोचते हो? – David