2011-11-18 15 views
8

यह तय करने के लिए एक <asp:UpdatePanel /> एक अजाक्स पोस्टबैक हम कैसे उपयोग कर सकते हैं के लिए इसी तरह का प्रदर्शन किया है, तो एक रास्ता है ...यह जांचने के लिए कि क्या अपडेटपेनल वापस पोस्ट कर रहा है या नहीं?

if(!Page.IsPostBack) { ...snip } 

... निर्धारित करने के लिए एक बटन से एक पोस्टबैक सबमिट हो रहा है।

मैं jQuery से अजाक्स अनुरोध पता लगाने के लिए कोशिश कर रहा हूँ, लेकिन यह रूप में अच्छी तरह जो मैं जैसे बाहर करना चाहते हैं UpdatePanel अनुरोध उठा है ...

if (Request.IsAjaxRequest() && !Page.IsUpdatePanelPostback) 
{ 
    // Deal with jQuery Ajax 
} 

उत्तर

12

मैं अगर यह किसी भी आपके समाधान की तुलना में बेहतर काम करेंगे पता नहीं है, लेकिन आप की कोशिश की ?:

if (ScriptManager.GetCurrent(Page).IsInAsyncPostBack) 
{ 
    Control ctrl = GetControlThatCausedPostBack(Page); 
    if (ctrl is UpdatePanel) 
    { 
     //handle updatepanel postback 
    } 
} 

private Control GetControlThatCausedPostBack(Page page) 
{ 
    //initialize a control and set it to null 
    Control ctrl = null; 

    //get the event target name and find the control 
    string ctrlName = Page.Request.Params.Get("__EVENTTARGET"); 
    if (!String.IsNullOrEmpty(ctrlName)) 
     ctrl = page.FindControl(ctrlName); 

    //return the control to the calling method 
    return ctrl; 
} 
+0

अपडेट किया है, मुझे आश्चर्य है कि क्या मैं 'ScriptManager.GetCurrent (पेज) IsInAsyncPostBack' का उपयोग कर सकता हूं स्वयं, क्योंकि मुझे लगता है कि एएसपी.नेट से अन्य नियंत्रण AJAX एक्सटेंशन अजाक्स अनुरोध को आग लगा सकता है कि मैं पिकअप नहीं लेना चाहता हूं। –

+0

यह एक शॉट के लायक है, मुझे लगता है। –

3

निम्नलिखित आजमाएं:

var controlName = Page.Request.Params.Get("__EVENTTARGET"); 
if (!String.IsNullOrEmpty(controlName)) 
{ 
    // Use FindControl(controlName) to see whether 
    // control is of UpdatePanel type 
} 

उपयोगी लिंक:

+0

यह काम कर सकता है लेकिन यह केवल एक विशिष्ट अद्यतन पैनेल का पता लगाता है? मैं एक और 'जेनेरिक' समाधान के बाद हूं जो किसी भी अपडेटपेनल का पता लगाता है। –

+0

कोई समस्या नहीं है, आप यह देखने के लिए FindControl() का उपयोग कर सकते हैं कि यह नियंत्रण UpdatePanel प्रकार का है ... मैंने अपना उत्तर – sll

9

आप देख सकते हैं कि पोस्टबैक अतुल्यकालिक था और क्या यह एक अद्यतन पैनल देख द्वारा जारी किया गया था इन गुणों पर:

ScriptManager.GetCurrent(Page).IsInAsyncPostback 
ScriptManager.GetCurrent(Page).AsyncPostbackSourceElementID 
संबंधित मुद्दे

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