プロが教えるわが家の防犯対策術!

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

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

A 回答 (2件)

単純に親ウインドウないのフォーム名が


aspnetFormでform1ではないからでは。

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

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

この回答への補足

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

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

補足日時:2006/10/22 14:05
    • good
    • 0

window.opener.form1.TextBox1.value



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

この回答への補足

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

補足日時:2006/10/20 18:15
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!