• 締切済み

子ウィンドウから親ウィンドウへの値代入

こんにちは。 asp.net2.0を使い始めて間もないのですが、子ウィンドウから親ウィンドウへの値代入で困ってます。 親ウィンドウからボタンで子ウィンドウを表示し、子ウィンドウのGridViewで選択した値を親ウィンドウの テキストボックス(サーバーコントロール)に代入したいのですが、 ['window.opener.form1.TextBox1' は Null またはオブジェクトではありません。] というエラーが出てしまいます。 ネットで見つけたサンプルは、親、子ともにウェブフォームを使用しており、確かにうまくいくのですが、 私が作っているページはマスターページの中のコンテンツフォームを親としていて、うまくいきません。 ※但し、親側のコントロールをHTMLクライアントコントロールのINPUTタグにし、 さらにフォーム名をaspnetForm(ブラウザのソース表示でみたらそうなってました。自動生成?) にして ↓子ウィンドウのグリッド選択時ソース protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { string strScript; strScript = "<script language='javascript'>"; strScript += "window.opener.form1.TextBox1.value='aaaa';"; strScript += "window.close();"; strScript += "</script>"; Response.Write(strScript); } リテラルコントロールにしたり、TextBox1.valueではなくTextBox1.textにしてみたりと いろんなパターンを試しましたが、だめでした。 コンテンツフォームでは親のサーバーコントロールへの値代入は不可能なのでしょうか? そもそも、子ウィンドウでの検索というのはASP.NETでは、あまり一般的ではないのでしょうか? 宜しくお願いいたします。 (情報、不足してましたら教えてください。)

  • jichi
  • お礼率56% (21/37)

みんなの回答

  • k_kujira
  • ベストアンサー率0% (0/0)
回答No.2

単純に親ウインドウないのフォーム名が aspnetFormでform1ではないからでは。 "window.opener.aspnetForm.TextBox1.value='aaaa';"; がより正しいかと。 きつい意見ではありますが、フォーム名と コントロール名の見直しが 必要ではないかと思います

jichi
質問者

補足

実行時の親ウィンドウをソース表示すると確かにaspnetFormになってますが もともとVisualStudioでのソースはform1になっています。 すみません。質問文に漏れがありましたが、フォーム名をaspnetFormにして親のコントロールをinputタグにした場合だけ動きます。でもaspのtextboxコントロールにすると値が代入されません。 親ページをコンテンツフォームにしなければ動くのですが・・・

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

window.opener.form1.TextBox1.value を window.opener.document.form1.TextBox1.value にしてみるとか

jichi
質問者

補足

ご回答ありがとうございます。 早速試してみましたが、やはり同様のエラーになってしまいました・・・

関連するQ&A

  • 子ウィンドウより親ウィンドウのフォームをsubmit

    親ウィンドウより子ウィンドウをwindow.openにて 表示し、 parent.window.opener.document.form.コントロール名.value="111"; というふうに、子ウィンドウより親ウィンドウのコントロールに値をセットしています。これに親ウィンドウのフォームをsubmitするという処理を追加したいのですが、可能なのでしょうか?? もし可能であれば、その方法を教えてください。 よろしくお願いします!!!! また、子ウィンドウより親ウィンドウのコントロールに値をセットした場合、親ウィンドウのonchangeイベントは発生しないようなのですが、この解消方法はないでしょうか?? よろしくお願いします!!!!

  • 親ウィンドウのフォームの値を変更

    showModalDialogでオープンした子画面から、returnValueで値を返すのとは違う方法で、親ウィンドウのフォームの値を変更したいと思っています。 (その子画面をオープンすると同時に、親ウィンドウのフォーム値を変更したいため) その際に    window.opener.document.formA.hiddenA.value = "aaa" という風に記述しているのですが、「window.opener.documentはオブジェクトではありません」というエラーになってしまいます。window.openで開いた子画面からだと、この方法でできたと思うのですが・・・どうすれば変更できるでしょうか?そもそも、showModalDialogでオープンした画面から親ウィンドウの値を変更すること自体がダメなのでしょうか? よろしくお願いします。

  • 親→子1→子2→親のデータ渡し

    1.親ウィンドウからサブウィンドウ1を開く。 2.サブウィンドウ1でsubmitボタンを押すと値が  window.openerで親に渡り更にサブウィドウ2が開く。 ここまでは、出来るのですが 3.サブウィンドウ2でsubmitボタンを押して値を親ウィンドウに渡すにはどうしたらよいでしょうか? ここでwindow.openerを使うとサブウィンドウ1が親ウィンドウと判断してしまい上手くいきません。 上手い方法があれば教えて下さい。

  • onBlurのイベントを使ってデータベースを参照し値を代入する方法

    伝票入力する際、ACCESS等で作ると、例えば「得意先コード」を入力すると 「得意先名」が表示される。という画面がありますよね。 そこで先輩方にお伺いしたいのですが、 ASPを使って同様のことをやる場合、どんな手法があるのでしょうか? 私なりに考えた方法が2つほどあるのですが、これが正しいのでしょうか? <案1> ・子ウインドウを表示し、そこでデータベースを参照し、親ウインドウに値を代入。 ---親ウインドウ側--- <INPUT type="text" name="text1" onBlur="GetJTname()"> <INPUT type="text" name="text2"> <script language="JAVAScript"> function GetJTname(){  Newwin=window.open("test1_1.asp?a=" + document.form1.text1.value,"sample","width=240,height=180"); } </script> ---子ウインドウ側--- <form name="form2"> <INPUT type="text" id=text1 name=text1 value="<%=rs.Fields("name_inf").Value%>"> </form> <script language="JAVAScript"> function action(){  window.opener.document.form1.text2.value=document.form2.text1.value;  window.close(); } </script> <案2> ・自分自身にデータを投げる <INPUT type="text" name="text1" onBlur="GetJTname()"> <INPUT type="text" id=text2 name=text2 QS=Request.QueryString("B") value="<%if QS <>"" then %><%=Tname(QS)%><%end if%>"> <%function Tname() <script language="JAVAScript"> function GetJTname(){  location.href ='test1.asp?B=' + document.form1.text1.value; } </script> <%function Tname(code) '... ADOの処理 end function%> (案1)では、当然ながら一瞬ウインドウが開きます。 (案2)では、せっかく入力したTEXT1の内容が消えてしまいます。

  • 子ウィンドウから親ウィンドウのチェックボックス

    おそれいります。 現在、子ウインドウで、window.opener.document.getElementById('text1').value='4444'; window.opener.document.getElementById('text2').value='こんにちは'; window.opener.document.getElementById('text3').value='今日は晴れ'; として、親ウィンドウで <input type="text" id="text1"> <input type="text" id="text2"> <input type="text" id="text3"> へ値をセット出来ているのですが、 この記述の流れで親ウィンドウのチェックボックスを子ウィンドウからtrueにすることはできるでしょうか。よろしくお願いします。

  • 親フォームとサブフォームでの値の渡し方

    入力フォームに部門名(textbox)を入れる項目があります。 部門名を入れるには参照ボタンを押してサブフォームを開きます。 サブフォームにはDBから引っ張ってきた部門一覧が表示されます。 このなかから該当する部門を選び「選択」ボタンを押します。 ここで、親フォームの部門名(text)に値を設定する方法として javascriptを使用し下記のように記述しています。 window.opener.document.forms[0].bumon.value=選択した部門名; 問題なのが、もし親フォームでメニューに戻ってしまっていて サブフォームの「選択」ボタンを押されたときです。 当然、親フォームには部門名(textbox)がないのでスクリプトエラーに なります。 親フォームに「部門名(textbox)」が存在するかどうかチェック、又は スクリプトエラーがでないようにする方法はありますでしょうか? WEBではポップアップはあまり開かない方が良いと聞きますが 仕様なのでこの実装できくしかありません。

  • 子ウィンドウ→親ウィンドウのテキストフォームでバックスラッシュは?

    子ウィンドウ内でリンクをクリックしたら、親ウィンドウのテキストフォームに値が入力される、というところで問題が起きました。 // *********子ウィンドウのソース********** // ---関数部分--- function fntext(val1){ if (window.opener){ // 引数のval1を親ウィンドウのテキストフォームに入れる window.opener.document.フォーム名.テキストフォーム名.value=val1; } } // ---リンク部分--- <a href="#" onclick="fntext('117680')">xxxx</a> で、fntext関数の引数に全角文字や数字や英字を入れた場合はまったく問題ないのですが '\\\\\'というバックスラッシュ(円マーク)を入れると、親ウィンドウのテキストフォームに 値が入力されません。(↓こんな感じだと入力されません) <a href="#" onclick="fntext('\\\\\')">xxxx</a> バックスラッシュを使用する場合は特別な方法があるのでしょうか? どうかお願いします。

  • 別のサーバURLの子ウィンドウから親ウィンドウを制御したい。

    親ウィンドウから、別のサーバURLの子ウィンドウを開き、開いた子ウィンドウから親ウィンドウの制御を行ないたいと考えています。どのようにすればできるでしょうか? 同一サーバ内であれば、子ウィンドウのスクリプトで、 opener.name.value="Nakai"; というように記述すればよいですが、別のサーバ上のスクリプトから実行すると。 「書き込みできません」 と表示されます。(ブラウザIE6,サーバTomcat3) openerが使えないようであれば、ウィンドウ名を使用する方法などが無いか考えましたが、windowの取得方法ももわかりません。 よろしくお願いします。

  • 子WINDOWの値を親WINDOWに反映したい

    いつもお世話になっております。 現在、ファイルのアップロード部分を作成しているのですが、 そこで、ファイルをアップロードをすると子WINDOWSが表示されて、新しいファイル名などを表示しているのですが、その新しく作成したファイル名を、親WINDOWSのテキストエリアに表示させたいのです。 イメージとしては、子WINDOWS上に「ファイル名を転送」のようなボタンを作成して、それをクリックしたら、子画面が閉じて、親WINDOWSのテキストエリアにファイル名が記載されるようにしたいです。 親から子WINDOWを開く際は、window.openerを使って開いているのですが、 どうしても子画面から、親画面に値を反映させる部分がわかりません。 大変お手数ですが、ご教授いただけないでしょうか。 以下部分部分ではありますが、ソースを表示します。 ★親WINDOW ■子WINDOWを開くjavasclipt部分 <script type="text/javascript"> function pop(obj) { wobj = window.open("", "pop","scrollbars=yes,width=480,height=360"); obj.target = "pop"; wobj.focus(); return true; } </script> ■子WINDOWを開くことになるファイルをアップロードする部分 <form action="./upload.php" method="POST" enctype="multipart/form-data" target="pop" accept-charset="utf-8" onsubmit="return pop(this)"> <input type="hidden" name="MAX_FILE_SIZE" value="10485760" /> <!--1024*1024*10 = 10MB--> <input type="file" name="my_file" /> <INPUT TYPE="hidden" NAME="shainid" VALUE="<%=sShainid%>"> <input type="submit" value="ファイルの転送開始する" /> </form> ■子WINDOWから、新ファイル名を記載したい部分 <form action = "touroku.asp" method="POST" onsubmit="return chkHissu(this)" name="form01"> <textarea name="tenpu" style="width:100%" rows=3 id="tenpu"></textarea> ★子WINDOW PHPの新しいファイル名の部分など echo 'アップロードは成功しました。<br /><br />'; echo 'ファイル名 : '.$safehtml_myfile_name.'<br />'; echo 'MIME型 : '.$safehtml_myfile_type.'<br />'; echo 'ファイルサイズ : '.number_format($myfile_size).' bytes<br />'; echo '新しいファイル名 : '.$new_file_name.'<br />'; ・$new_file_name.を親WINDOWのテキストエリア部分に渡して、反映したいです。 大変お手数ですが、ご教授宜しくお願いいたします。

  • 子ウィンドウから親ウィンドウのテキストフィールドにデータを表示する

    子ウィンドウのリンクをクリックするとそのリンクの内容が親ウィンドウのテキストフィールドの中に表示されるというのを作りたいのですが、 親ウィンドウ <html> <head> <title>サブウィンドウから親ウィンドウのテキストフィールドにデータを表示する</title> <script language="JavaScript" type="text/JavaScript"> <!-- function MM_openBrWindow(theURL,winName,features) { //v2.0 window.open(theURL,winName,features); } //--> </script> </head> <body> <a href="javascript:;" onClick="MM_openBrWindow('subwindow.html','','width=160,height=160')">open</a> <form name="myFORM"> <input type="text" name="tBox"> </form> <form name="myFORM2"> <input type="text" name="tBox2"> </form> </body> </html> 子ウィンドウ <html> <head> <title>サブウィンドウから親ウィンドウのテキストフィールドにデータを表示する</title> <script Language="JavaScript"> <!-- function setData() { window.opener.document.myFORM.tBox.value="灯油ストーブ"; } function setData2() { window.opener.document.myFORM2.tBox2.value="シャワー"; } // --> </script> </head> <body> <a href="#" onClick="setData()">灯油ストーブ</a> <a href="#" onClick="setData2()">シャワー</a> </body> </html> これではリンク数とテキストフィールド数が同じじゃないといけないですよね。 作りたいのはテキストフィールドは15個あって、リンクの方は70個ぐらいあります。リンクをクリックするとテキストフィールドの中へ順々に表示させたいのですが、どうしたらよいのでしょうか? どうかアドバイスをお願いいたします。