sender._postBackSettings.sourceElement未定义

时间:2011-11-07 19:19:29

标签: asp.net jquery asp.net-ajax updatepanel pagerequestmanager

这就是我要做的 -

在文档准备就绪时使用jQuery,如果页面没有回发,我会发布一个手动回发更新面板,以便从数据库中检索数据。

当updatepanel获取数据时,我提供了一个updateprogress,当特定的updatepanel完成时我会隐藏它。我也希望从任何互动中“阻止”屏幕。加载数据后,我在表单上有其他按钮,我想在部分回发的情况下阻止所有内容。

以下是代码:

$(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';
                }
              } 

如果我不在屏幕上“点击”,一切都很棒。但是,如果我只是点击屏幕上的任何地方,而更新面板更新“EndRequestHandler”不会触发,我仍然坚持加载gif和阻止屏幕。 我在浏览器的错误控制台中收到以下错误:sender._postBackSettings.sourceElement未定义

有什么想法吗?

谢谢!

尼克

1 个答案:

答案 0 :(得分:0)

由于某种原因,sender._postBackSettings.sourceElement EndRequestHandlerBeginRequestHandler仍然返回NULL。

我定义了一个全局变量,在EndRequestHandler为其分配了值,并在{{1}}中检查了它的值。
这解决了这个问题。