- 締切済み
子ウィンドウから親ウィンドウへの値代入
こんにちは。 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では、あまり一般的ではないのでしょうか? 宜しくお願いいたします。 (情報、不足してましたら教えてください。)
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- k_kujira
- ベストアンサー率0% (0/0)
単純に親ウインドウないのフォーム名が aspnetFormでform1ではないからでは。 "window.opener.aspnetForm.TextBox1.value='aaaa';"; がより正しいかと。 きつい意見ではありますが、フォーム名と コントロール名の見直しが 必要ではないかと思います
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
window.opener.form1.TextBox1.value を window.opener.document.form1.TextBox1.value にしてみるとか
補足
ご回答ありがとうございます。 早速試してみましたが、やはり同様のエラーになってしまいました・・・
補足
実行時の親ウィンドウをソース表示すると確かにaspnetFormになってますが もともとVisualStudioでのソースはform1になっています。 すみません。質問文に漏れがありましたが、フォーム名をaspnetFormにして親のコントロールをinputタグにした場合だけ動きます。でもaspのtextboxコントロールにすると値が代入されません。 親ページをコンテンツフォームにしなければ動くのですが・・・