- PR -

[ASP.NET2.0]ポップアップウィンドウについて

1
投稿者投稿内容
Java人
ベテラン
会議室デビュー日: 2005/06/24
投稿数: 94
投稿日時: 2006-08-17 17:44
お世話になります。
ポップアップウィンドウについてご教授頂きたくお願い致します。

1.画面Aから画面Bをポップアップで起動
2.画面Bで選択した内容を画面Aに反映

上記の動作を行いたい場合、
画面B内で[Response.Write("window.opener.document.forms[0].XXXX.value]と
いうような感じで、画面Aに書き込むしか方法はないのでしょうか?

他に方法をご存じの方がいらっしゃいましたら
ご教授お願い致します。
Katze
ベテラン
会議室デビュー日: 2005/11/01
投稿数: 74
お住まい・勤務地: 1台でも せんだい
投稿日時: 2006-08-17 17:53
画面Bがモーダルになってもいいのであれば
showModalDialog
を使用し、戻り値を書き込むこともできると思います。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-08-17 20:03
引用:
2.画面Bで選択した内容を画面Aに反映

これは具体的にどういうことなのか。わからないですが、

選択した時点でサーバー処理が特に必要ないなら、Katzeさんの方法でやるか、
画面Bを表示した時点で、画面Aに反映するようなjavascriptを
各行のボタン(なのかは知らないけど)にセットしておくのもいいでしょう。

そうでないなら、画面A自体を読み込みなおさせたほうがスマートである場合もあります。
Java人
ベテラン
会議室デビュー日: 2005/06/24
投稿数: 94
投稿日時: 2006-08-17 21:33
window.openを用いて画面を起動し、起動された画面から親画面のフィールドに
値を設定しようとしているのですが、エラーが発生してうまく動作できません。

コード(抜粋)
[親画面]
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
  <title>無題のページ</title>
  <script language=javascript type="text/javascript">
    <!--
      function MakeChild() {
        window.open("subwindow.aspx");
      }
    -->
  </script>
</head>
<body>
  <form id="mainform" runat="server">
  <div>
    window.openでの起動<br />
    <br />
    <asp:Button ID="Button1" runat="server" Text="表示" Width="72px" />
    <br />
    <br />
    <asp:Label ID="Label1" runat="server" Text="Label" Width="360px"></asp:Label></div>
  </form>
</body>
</html>

[子画面]
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
  <title>無題のページ</title>
  <script language=javascript type="text/javascript">
    <!--//
      function Finish(nRet)
      {
        if (nRet == 0)
        {
          window.opener.document.mainform.Label1.value = "ご利用どうもありがとうございます。";
        }
        else
        {
          window.opener.document.mainform.Label1.value = "また後日ご利用をご検討くださいね!";
        }
        window.close();
      }
    //-->
  </script>
</head>
<body>
  <form id="form1" runat="server">
  <div>
    &nbsp;<asp:Button ID="Button1" runat="server" Text="はい" Width="56px" />
    <asp:Button ID="Button2" runat="server" Text="いいえ" /></div>
  </form>
</body>
</html>

[エラー内容]
window.opener.document.mainform.Label1はNULLまたはオブジェクトではありません。

ちなみに単なるHTMLで実装するとうまく動作しました。
ASP.NETにすることで不可能なことがあるのでしょうか?
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2006-08-17 22:14
ASPX側だけ見せられてもボタン押下時に何をしてるかわかりません。そもそもこの場合サーバーコードは
必要なのでしょうか?特に親画面、window.openするだけなら普通のinputタグでいいですよね。
子画面も<asp:Button である必要がないような気がしますが、仮にサーバー処理が必要だとしても
OnClientClickなんていうプロパティがあったりします。

引用:
[エラー内容]
window.opener.document.mainform.Label1はNULLまたはオブジェクトではありません。

Labelが出力するのはspanタグですよね。
spanはForm部品じゃないのでそのようにはアクセスできなかったと思うのですが。

引用:
ちなみに単なるHTMLで実装するとうまく動作しました。

これはどうやったのですか?

引用:
ASP.NETにすることで不可能なことがあるのでしょうか?

基本的にはありません。ASP.NETはHTMLを出力しているだけなんですから。
未記入
ベテラン
会議室デビュー日: 2003/06/26
投稿数: 76
投稿日時: 2006-08-17 23:27


[ メッセージ編集済み 編集者: 未記入 編集日時 2007-01-19 21:45 ]
Java人
ベテラン
会議室デビュー日: 2005/06/24
投稿数: 94
投稿日時: 2006-08-18 10:32
お世話になります。

わかりにくいソースを記載してしまい申し訳ありません。

>べる様、ぜうす様
エラーの原因はラベルを使用していたからでした。
テキストボックスを使用したらうまくできました。

1

スキルアップ/キャリアアップ(JOB@IT)