トップ回答者
ModalPopupExtenderを呼び出し先から非表示にしたい

質問
回答
-
> レスの内容を基に、私なりにいろいろと試してみたのですが、
> うまくいきませんでした・・・
> もしよろしければサンプルコードを頂けないでしょうか?どのように試して、どこがうまくいかないか、具体的に、きちんと書いていただけませんか?
また、一方的に質問・要求するだけでなく、私の先のレスの質問にも答えていただけませんか?
次回はそのようにお願いします。
検証に使ったコードをアップしておきます。
親ページ
<%@ Page Language="C#" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script type="text/javascript"> //<![CDATA[ function iframeRef(frameRef) { return frameRef.contentWindow ? frameRef.contentWindow.document : frameRef.contentDocument; } function hideModalPopup() { var modalPopup = $find('programmaticModalPopupBehavior'); modalPopup.hide(); } function showModalPopup() { var ifm = iframeRef($get('iframe1')); var btn = ifm.getElementById('hideButton'); if (btn.onclick == null) { if (window.addEventListener) { btn.addEventListener('click', hideModalPopup, false); } else if (window.attachEvent) { btn.attachEvent('onclick', hideModalPopup); } } var modalPopup = $find('programmaticModalPopupBehavior'); modalPopup.show(); } //]]> </script> <style type="text/css"> /*Modal Popup*/ .modalBackground { background-color: Gray; filter: alpha(opacity=70); opacity: 0.7; } .popup { background-color: White; } </style> </head> <body> <form id="form1" runat="server"> <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"> </asp:ToolkitScriptManager> <h1>ModalPopup Test</h1> <asp:Button ID="DummyButton" runat="server" style="display: none;" /> <input type="button" value="Show ModalPopup" onclick="showModalPopup();" /> <asp:Panel ID="Panel1" runat="server" CssClass="popup"> <iframe id="iframe1" src="190-PageIniframe.aspx"> </iframe> </asp:Panel> <asp:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="DummyButton" BehaviorID="programmaticModalPopupBehavior" BackgroundCssClass="modalBackground" PopupControlID="Panel1"> </asp:ModalPopupExtender> </form> </body> </html>
iframe に表示するページ
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <h1>Page in iframe</h1> <input type="button" id="hideButton" value="Hide ModalPopup" /> </div> </form> </body> </html>
- 回答の候補に設定 佐伯玲 2013年1月31日 4:53
- 回答としてマーク onionsword 2014年9月11日 6:30
すべての返信
-
> 別ページの「OK」ボタンをクリックしたタイミングでポップアップ
> を非表示にすることは可能でしょうか?iframe に加えて Button を ModalPopup で表示する Panel に配置して、その Button でコンロトールするのはダメなのですか?
それがダメなら・・・
ModalPopup はクライアントスクリプトで非表示にできます。それには、ToolkitScriptManager によりダウンロードされたクライアントスクリプトで定義されている hide メソッドを使います。(詳しくは Ajax Control Toolkit のサイトからダウンロードできるサンプルのソースを見てください。)
なので、iframe の中のどこか適当な DOM に click イベントのリスナーを仕掛けて、それで hide メソッドを起動すれば可能かもしれません(ここは未検証です・・・時間ができたらやってみます)。
iframe の中の DOM オブジェクトの取得については以下のページが参考になると思います。
How can I access iFrame elements with Javascript?
http://stackoverflow.com/questions/1452871/how-can-i-access-iframe-elements-with-javascript- 回答の候補に設定 佐伯玲 2013年1月24日 8:12
-
> レスの内容を基に、私なりにいろいろと試してみたのですが、
> うまくいきませんでした・・・
> もしよろしければサンプルコードを頂けないでしょうか?どのように試して、どこがうまくいかないか、具体的に、きちんと書いていただけませんか?
また、一方的に質問・要求するだけでなく、私の先のレスの質問にも答えていただけませんか?
次回はそのようにお願いします。
検証に使ったコードをアップしておきます。
親ページ
<%@ Page Language="C#" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script type="text/javascript"> //<![CDATA[ function iframeRef(frameRef) { return frameRef.contentWindow ? frameRef.contentWindow.document : frameRef.contentDocument; } function hideModalPopup() { var modalPopup = $find('programmaticModalPopupBehavior'); modalPopup.hide(); } function showModalPopup() { var ifm = iframeRef($get('iframe1')); var btn = ifm.getElementById('hideButton'); if (btn.onclick == null) { if (window.addEventListener) { btn.addEventListener('click', hideModalPopup, false); } else if (window.attachEvent) { btn.attachEvent('onclick', hideModalPopup); } } var modalPopup = $find('programmaticModalPopupBehavior'); modalPopup.show(); } //]]> </script> <style type="text/css"> /*Modal Popup*/ .modalBackground { background-color: Gray; filter: alpha(opacity=70); opacity: 0.7; } .popup { background-color: White; } </style> </head> <body> <form id="form1" runat="server"> <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"> </asp:ToolkitScriptManager> <h1>ModalPopup Test</h1> <asp:Button ID="DummyButton" runat="server" style="display: none;" /> <input type="button" value="Show ModalPopup" onclick="showModalPopup();" /> <asp:Panel ID="Panel1" runat="server" CssClass="popup"> <iframe id="iframe1" src="190-PageIniframe.aspx"> </iframe> </asp:Panel> <asp:ModalPopupExtender ID="ModalPopupExtender1" runat="server" TargetControlID="DummyButton" BehaviorID="programmaticModalPopupBehavior" BackgroundCssClass="modalBackground" PopupControlID="Panel1"> </asp:ModalPopupExtender> </form> </body> </html>
iframe に表示するページ
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <h1>Page in iframe</h1> <input type="button" id="hideButton" value="Hide ModalPopup" /> </div> </form> </body> </html>
- 回答の候補に設定 佐伯玲 2013年1月31日 4:53
- 回答としてマーク onionsword 2014年9月11日 6:30