sender._postBackSettings.sourceElement is undefined

2.5k views Asked by At

This is what I'm trying to do -

Using jQuery when the document is ready and if the page is not postback I issue a manual postback for an updatepanel to retrieve data from a database.

While the updatepanel is getting the data I present an updateprogress which I hide when the specific updatepanel finishes. I also want to "BLOCK" the screen from any interaction. After the data is loaded I have additional buttons on the form and I want to block everything in case of any partial-postback.

Here is the code:

$(document).ready(function ()
       {
            if(<% =(Not Page.isPostBack).ToString().ToLower() %>)
            {
            __doPostBack('upShipping');
            }
        }
       function pageLoad() {
            var prm = Sys.WebForms.PageRequestManager.getInstance();
            prm.add_beginRequest(BeginRequestHandler);
            prm.add_endRequest(EndRequestHandler);
       }
function BeginRequestHandler(sender, args)
            {
                $('.blur').css("display", "block");
                if (args._postBackElement.id == 'upShipping') {
                    $get('divCalculating').className = 'Show';
                }
            }


       function EndRequestHandler(sender, args)
            {
              $('.blur').css("display", "none");
                if (sender._postBackSettings.sourceElement.id == 'upShipping')
                {
                    $get('divCalculating').className = 'Hidden';
                }
              } 

If I do not "CLICK" on the screen everything works great. But if I just click anywhere on the screen while the updatepanel updates the "EndRequestHandler" doesn't fire and I'm stuck with the loading gif and blocked screen. I get the following error in the error console of the browser: sender._postBackSettings.sourceElement is undefined

Any ideas?

Thanks!

Nick

1

There are 1 answers

0
nick_warren On

For some reason sender._postBackSettings.sourceElement kept coming back as NULL in the EndRequestHandler.

I defined a global var, assigned it a value at the BeginRequestHandler and checked its value instead in the EndRequestHandler.
This solved the problem.