2011-07-05 17 views
9

मुझे एएसपीनेट और अपडेट पैनल के साथ कुछ परेशानी हो रही है। समस्या यह है कि हर बार आंशिक पोस्टबैक अद्यतन पैनल से होता है, पृष्ठ को शीर्ष पर वापस स्क्रॉल किया जाता है। मेरे अधिकांश पृष्ठों पर यह इतनी बड़ी समस्या नहीं है, लेकिन कुछ पृष्ठों पर काफी लंबा हो सकता है। फिर, जब उपयोगकर्ता पृष्ठ के नीचे होता है, तो मैं इसमें RadListView के साथ jQuery पॉपअप दिखाता हूं, और उपयोगकर्ता इस सूची में तत्व का चयन कर सकते हैं। लेकिन इस तत्व पर क्लिक करने से आंशिक पोस्टबैक होता है और पृष्ठ शीर्ष पर वापस चला जाता है।अपडेट पैनल से एसिंक पोस्टबैक के बाद स्क्रॉल स्थिति बनाए रखें

मैंने इंटरनेट से देखा है और मेरी समस्या का कोई समाधान नहीं मिला। निश्चित रूप से MaintainScrollPositionOnPostback सेटिंग कुछ भी नहीं करता है।

क्या किसी को कुछ भी पता है जो मुझे इस समस्या से निपटने में मदद कर सकता है?

चीयर्स, Pako

+1

डुप्लिकेट: http://stackoverflow.com/questions/5288682/maintain-panel-scroll-position-on- आंशिक-पोस्टबैक-एएसपी-नेट – Despertar

+0

... या [Async पोस्टबैक के बाद स्क्रॉल स्थिति रीसेट करें - एएसपी.नेट] (http://stackoverflow.com/questions/616210/reset-scroll-position-after-async-postback-asp- शुद्ध) – Bergi

उत्तर

0

पुनरावर्तक में कुछ नियंत्रण की आईडी का उपयोग करें और पोस्टबैक पूर्ण होने के बाद स्क्रॉल करने के लिए JQuery का उपयोग करें।

आप उत्पन्न होने वाले प्रारूप के अनुसार कुछ नियंत्रण की आईडी प्राप्त कर सकते हैं।

1

इसके लिए थोड़ा सा कामकाज है, मैंने लंबे समय से ईआरपी में उपयोग किया है। सुनिश्चित नहीं है कि यह सबसे अच्छा समाधान है, लेकिन यह काम करता है।

मुझे नहीं पता कि आप कस्टम पेज क्लास या डिफ़ॉल्ट System.Web.UI.Page एक का उपयोग करते हैं, लेकिन, मैं आपको यह बताने की कोशिश करूंगा कि आप इसे कैसे करते हैं, और फिर आप इसे सबसे अच्छा तरीका ढूंढ सकते हैं आपका पर्यावरण, ठीक है?

उदाहरण के लिए, आप आईडी "hfScrollPosition" के साथ HiddenField बनायेंगे।

फिर, आप जावास्क्रिप्ट ईवेंट बनायेंगे: document.onscroll या ऐसा कुछ, और ईवेंट के अंदर आप वर्तमान स्क्रॉल स्थिति प्राप्त करने के लिए छिपे हुए फ़ील्ड को अपडेट करेंगे। उदाहरण के लिए: document.getElementById("hfScrollPosition").value = document.documentElement.scrollTop;

ऐसा करने के बाद, आपके पास एक स्क्रॉल स्थिति के अनुसार, एएसपी.NET नियंत्रण अपने मूल्य को द्विपक्षीय रूप से अद्यतन करेगा। तो, जब अपने पृष्ठ में कुछ नियंत्रण एक पोस्टबैक बनाता है, तो आपको निम्न जावास्क्रिप्ट कोड अपने Page_Load घटना में डाल कर सकते हैं:

document.documentElement.scrollTop = document.getElementById("hfScrollPosition").value;

तो, हर अपने पृष्ठ एक पोस्टबैक हो जाता है, शरीर स्क्रॉल स्थिति सही ढंग से अपडेट किया जाएगा ।


संपादित: मैं यह अनुकरण करने के लिए एक बेला कर दिया है: https://jsfiddle.net/j26fpgzo/

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