asp.net.netajaxupdatepanelhttp-post

How to check whether UpdatePanel is posting back?


Is there a way to determine if an <asp:UpdatePanel /> has performed an Ajax postback similar to how we can use...

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

... to determine if a postback from a button submit is taking place.

I'm trying to detect Ajax requests from jQuery, but it's picking up UpdatePanel requests as well which I want to exclude eg...

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

Solution

  • I don't know if this will work any better than your solution, but have you tried?:

    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;
    }