UpdatePanel पूरी तरह से अपडेट पैनल के अपडेट को अपडेट करता है। इसका मतलब यह है कि जिन घटनाओं को आपने सब्सक्राइब किया था, वे अब सब्सक्राइब नहीं हुई हैं क्योंकि उस अपडेट पैनल में नए तत्व हैं।
मैंने इसके बारे में काम करने के लिए जो किया है वह उन घटनाओं की पुनः सदस्यता है जो मुझे हर अपडेट के बाद चाहिए। मैं $(document).ready()
शुरुआती लोड के लिए उपयोग करता हूं , फिर PageRequestManager
हर अपडेट को फिर से सब्सक्राइब करने के लिए माइक्रोसॉफ्ट (उपलब्ध यदि आपके पेज पर अपडेट पैनल हो तो) का उपयोग करें।
$(document).ready(function() {
// bind your jQuery events here initially
});
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function() {
// re-bind your jQuery events here
});
PageRequestManager
एक जावास्क्रिप्ट वस्तु जो स्वचालित रूप से उपलब्ध है अगर एक अद्यतन पैनल पृष्ठ पर है। जब तक UpdatePanel पृष्ठ पर है, तब तक आपको इसका उपयोग करने के लिए ऊपर दिए गए कोड के अलावा कुछ भी करने की आवश्यकता नहीं है।
यदि आपको अधिक विस्तृत नियंत्रण की आवश्यकता है, तो यह ईवेंट तर्कों को पास करता है कि कैसे .NET ईवेंट को तर्कों को पारित किया जाता है, (sender, eventArgs)
ताकि आप देख सकें कि क्या ईवेंट उठाया गया और यदि आवश्यक हो तो केवल पुन: बाँध लें।
यहाँ Microsoft से प्रलेखन का नवीनतम संस्करण है: msdn.microsoft.com/...bb383810.aspx
आपकी आवश्यकताओं के आधार पर आपके पास एक बेहतर विकल्प, jQuery का उपयोग करना है .on()
। ये विधि हर अपडेट पर DOM तत्वों की फिर से सदस्यता लेने की तुलना में अधिक कुशल है। इस दृष्टिकोण का उपयोग करने से पहले सभी दस्तावेज पढ़ें, क्योंकि यह आपकी आवश्यकताओं को पूरा कर सकता है या नहीं कर सकता है। बहुत सारे jQuery प्लगइन्स हैं जो कि रिफ्लेक्टर का उपयोग करने के लिए अनुचित होगा .delegate()
या .on()
, इसलिए उन मामलों में, आप फिर से सदस्यता लेने से बेहतर हैं।