1

ModalPopupExtender と組み合わせた UpdateProgress-Control に Image があります。サイトの読み込み中に Extender を開くには、次の 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) にのみ開く必要があります。if(postbackelement == UpdatePanelMain) などのようにJavascriptで行うにはどうすればよいですか?

4

2 に答える 2

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

同様の質問: javascript でリクエストを開始する Id update パネルを取得する方法

于 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 に答える