2011-09-02 15 views
7

पर स्क्रॉल स्थिति बनाए रखें मैं एमवीसी कोंट्रिब फ्रेमवर्क का उपयोग करने वाली ग्रिड तालिका को सॉर्ट करने के बाद पोस्टबैक पर स्क्रॉल स्थिति कैसे बनाए रख सकता हूं?एएसपी.नेट एमवीसी 3 रेजर - पोस्टबैक

उत्तर

1

सामान्य स्क्रॉल स्थिति को एक छिपे हुए क्षेत्र में सेट करने के लिए कुछ जावास्क्रिप्ट का उपयोग करना सामान्य तरीका है, फिर पृष्ठ लोड पर आमतौर पर उस स्थिति को पुनर्स्थापित करें (आमतौर पर एक jquery तैयार ईवेंट में)।

हालांकि, यह वास्तव में सिर्फ एक दुष्प्रभाव है। आपको किसी पोस्टबैक की बजाय ग्रिड को अपडेट करने के लिए किसी प्रकार का AJAX कमांड करना चाहिए, फिर कोई स्क्रॉलिंग आवश्यक नहीं है।

+1

यह समाधान बहुत अच्छा है, लेकिन मैं सोच रहा था कि अगर मैं कुछ बेहतर और आसान पा सकता हूं, तो संपत्ति को बनाए रखने के लिए StrollPositionOnPostback = ASP.NET वेब प्रपत्रों में सत्य। मैं खोज फ़िल्टर और सॉर्टिंग के साथ एमवीसी कंट्रीब्रिड ग्रिड का उपयोग कर रहा हूं इसलिए मुझे एक अंतर्निहित समाधान की उम्मीद है लेकिन मुझे यह नहीं मिल रहा है ... – Mast3r

+1

हाँ मैं Mast3r से सहमत हूं। कुछ भी नहीं कहता है कि हमें अजाक्स का उपयोग करना होगा। मुझे एमवीसी 4 में व्यूमोडल्स का उपयोग करना पोस्टबैक के साथ विकसित करने और बनाए रखने में आसान है। यदि ब्राउज़र कैशिंग सक्षम है तो आप पेज फ्लिक भी नहीं देखते हैं! http://stackoverflow.com/a/2618726/706363 – ppumkin

0

jQuery और क्लाइंट साइड कुकी का उपयोग करें।

$(function(){ 
    var posName = location.href + "_top"; 
    $(window).unload(function() { 
    var top = $(document).scrollTop(); 
    $.cookie(posName, top); 
    }); 

    var goTop = parseInt($.cookie(posName)); 
    if (goTop) { 
    $(document).scrollTop(goTop); 
    $.cookie(posName, ""); 
    } 
}); 

इस कोड को आशा है।

+0

पर समाधान का अर्थ यह होगा कि ब्राउज़र एक अलग पृष्ठ पर स्थानांतरित होने पर भी स्क्रॉल करेगा। मुझे लगता है कि एक छिपी हुई इनपुट का उपयोग करना बेहतर है, क्योंकि यह केवल वर्तमान पृष्ठ पर ही रहेगा। –

0

एक उपयोगी समाधान यहाँ पोस्ट किया जाता है: http://www.experts-exchange.com/Hardware/Servers/Q_28082177.html

$(function(){ 

     var top = parseInt($.cookie("top")); 
     if(top) $(document).scrollTop(top); 
     $(document).scroll(function() { 
      var top = $(document).scrollTop(); 
      $.cookie("top", top); 
     }) 
    }); 

यह एक बहुत पुरानी धागा है, लेकिन मैं डेवलपर हैं जो इस मुद्दे को इस तरह का के लिए खोज हो जाएगा के लिए इस पोस्ट किया है, मदद मिल सकती है।