2012-10-22 13 views
5

सॉर्टिंग या पेजिंग करते समय अजाक्स लोडिंग इंडिकेटर दिखाएं मैं आसानी से वेबग्रिड को हुकअप कर सकता हूं और डिफ़ॉल्ट सेटिंग्स का उपयोग करके इसमें AJAX जोड़ सकता हूं। लेकिन एक बात यह है कि मैं यह पता लगाने के लिए संघर्ष कर रहा हूं कि ग्रिड सॉर्टिंग या AJAX के माध्यम से पेजिंग करते समय लोडिंग इंडिकेटर को कैसे जोड़ना है।एएसपीनेट एमवीसी वेबग्रिड

कॉलबैक फ़ंक्शन में एक निर्मित है जो AJAX लोडिंग सूचक को बंद करने के लिए बहुत अच्छा है लेकिन मैं आसानी से कैसे चालू कर सकता हूं?

नीचे कोड है जो मेरे पास वर्तमान में मेरे वेबग्रिड के लिए है।

@{ 
    var grid = new WebGrid(rowsPerPage: Model.CountPerPage, ajaxUpdateContainerId: "GridArea"); 
    grid.Bind(Model.Users, 
       autoSortAndPage: false, 
       rowCount: Model.TotalCount 
      ); 
    grid.Pager(WebGridPagerModes.All); 
} 
<div id="GridArea"> 
    @grid.GetHtml(htmlAttributes: new {id ="UserGrid"}, 
     columns: new [] { 
     grid.Column("ID", canSort: false), 
     grid.Column("FirstName"), 
     grid.Column("LastName"), 
     grid.Column("Email"), 
     grid.Column("FullName", canSort: false) 
     } 
    ) 
</div> 

मैंने निम्नलिखित का उपयोग करने का प्रयास किया है, लेकिन इनमें से कोई भी काम नहीं किया है।

<script> 
    $(function() { 
     $("#UserGrid").live("ajaxStart", function() { 
      alert("start"); 
     }); 
    }); 
</script> 

यह पहली बार काम करता है लेकिन ग्रिड के पहले एजेक्स रीफ्रेश के बाद काम नहीं करेगा।

<script> 
    $(function() { 
     $('#UserGrid').ajaxStart(function() { 
      alert("start"); 
     }); 
    }); 
</script> 

उत्तर

8

यह काम करना चाहिए।

$(document).ajaxStart(function(){ 
    //Show your progressbar here 
}).ajaxStop(function(){ 
    //Hide your progressbar here 
}); 

आपका दूसरा दृष्टिकोण पहले ajax प्रतिक्रिया के बाद क्योंकि काम नहीं कर रहा, डोम बनाया फिर जाता है और .ajaxStart भी बाध्यकारी खो दिया है। इसे वैश्विक दस्तावेज़ ऑब्जेक्ट के साथ बंधे और यह हमेशा वहां रहेगा।

+0

अगर मैं पेज के अन्य AJAX संचालित हिस्सों को चाहता हूं तो मैं इसे कैसे पूरा कर सकता हूं और मुझे सीधे वेबग्रिड से कॉल को अलग करने की आवश्यकता है? –

+2

वेबग्राइड के डीओएम को एजेक्स कॉल द्वारा प्रतिस्थापित किए जाने पर आपको वेबग्रिड के AJAX ईवेंट हैंडलर को फिर से पुनर्निर्मित करने की आवश्यकता होती है। तो, कोई फर्क नहीं पड़ता कि आप क्या करते हैं, आपको कुछ वैश्विक AJAX हैंडलर की आवश्यकता है जहां आप उन सभी को पुनर्जीवित कर सकते हैं। यदि आप कॉल को अलग करना चाहते हैं, तो आप अजाक्स कॉल को उत्पन्न करने वाले नियंत्रण का ट्रैक रखने के लिए छिपे हुए फ़ील्ड का उपयोग कर सकते हैं। – Tariqulazam

1

हां उपर्युक्त उत्तर आपकी मदद कर सकता है। असल में एक jquery API है जो क्लाइंट से सर्वर पर किए गए किसी भी AJAX अनुरोध का ख्याल रखेगा। तो जब आप कोई AJAX ऑपरेशन करते हैं तो यह फ़ंक्शन ट्रिगर करेगा। आप अपने कस्टम सीएसएस/छवियों या कुछ फ़ंक्शन डाल सकते हैं जिन्हें आप AJAX ऑपरेशन पर संकेतक के रूप में कॉल कर सकते हैं।

+0

यदि मैं पृष्ठ के अन्य AJAX संचालित हिस्सों को चाहता हूं तो मैं इसे कैसे पूरा कर सकता हूं और मुझे सीधे वेबग्रिड से कॉल को अलग करने की आवश्यकता है? –