みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

こんにちは。
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では、あまり一般的ではないのでしょうか?

宜しくお願いいたします。
(情報、不足してましたら教えてください。)

投稿日時 - 2006-10-20 16:42:41

QNo.2485398

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

単純に親ウインドウないのフォーム名が
aspnetFormでform1ではないからでは。

"window.opener.aspnetForm.TextBox1.value='aaaa';";
がより正しいかと。

きつい意見ではありますが、フォーム名と
コントロール名の見直しが
必要ではないかと思います

投稿日時 - 2006-10-22 06:42:57

補足

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

親ページをコンテンツフォームにしなければ動くのですが・・・

投稿日時 - 2006-10-22 14:05:38

ANo.1

window.opener.form1.TextBox1.value

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

投稿日時 - 2006-10-20 17:06:29

補足

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

投稿日時 - 2006-10-20 18:15:39

あなたにオススメの質問