1

我在 UpdateProgress-Control 中有一个与 ModalPopupExtender 相结合的图像。要在网站加载时打开扩展器,我使用以下 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> 

这工作正常,但扩展器现在打开每个请求。它仅应在特定的 UpdatePanel 被强制刷新 (UpdatePanelMain) 时打开。我怎样才能在 Javascript 中做到这一点,例如: if(postbackelement == UpdatePanelMain) 之类的?

4

2 回答 2

1

要获取 UpdatePanels id 并找到您赢得运行的 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

于 2012-11-02T07:47:15.737 回答
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();
    }
}

任何结论性的如何使这段代码“更好”一点?

于 2012-11-02T08:48:59.217 回答