使用JavaScript中的if子句查询刷新的UpdatePanel

时间:2012-11-02 07:43:07

标签: javascript asp.net updatepanel

我在UpdateProgress-Control中有一个与ModalPopupExtender结合的图像。要在网站加载时打开Extender,Iam使用以下Javascript:

<script type="text/javascript">
    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(showPopup);
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(hidePopup);

    function showPopup(sender, args) {
        var ModalControl = '<%= ModalPopupExtender1.ClientID %>';
        $find(ModalControl).show();
    }

    function hidePopup(sender, args) {
        var ModalControl = '<%= ModalPopupExtender1.ClientID %>';
        $find(ModalControl).hide();
    }
</script> 

这工作正常,但Extender现在每个请求都会打开。它只应在强制刷新特定UpdatePanel时打开(UpdatePanelMain)。我怎么能在Javascript中这样做:if(postbackelement == UpdatePanelMain)还是什么?

2 个答案:

答案 0 :(得分:1)

要获取UpdatePanels ID并找到您想要运行的那个,您可以使用args.get_postBackElement().id函数:

function showPopup(sender, args) {
     // get the Post ID and compare it with the one you let run
     if(args.get_postBackElement().id == "<%=UpdatePanelMain.ClientID%>")
     {
       var ModalControl = '<%= ModalPopupExtender1.ClientID %>';
       $find(ModalControl).show();
     }
}

类似的问题: How to get Id update panel that initial a request in javascript

答案 1 :(得分:0)

所以这个解决方法就是我正在寻找的。感谢Aristos的提示。

var UpdPanelsIds = args.get_updatePanelsToUpdate();

if (UpdPanelsIds[0] != "") {
    if (UpdPanelsIds[0] != "ctl00$cpMain$UpdatePanelMenue" || args.get_postBackElement().id == '<%= refreshButton.ClientID %>') {
        var ModalControl = '<%= ModalPopupExtender1.ClientID %>';
        $find(ModalControl).show();
    }
}

如何使这段代码变得“更好”?