- - PR -
子画面から親画面のテキストボックスに値を入れたい
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-06-16 13:17
お世話になります。
現在、VS2005にてwebアプリケーションを作成しています。 初めに開く画面は、FormViewのInsertItemTemplateになっています。 この画面内にあるボタンを押すと子画面が開きます。 「window.open」を設定しています。 この子画面にはいくつかボタンが設置されていて、 ボタンを押すと親画面のテキストボックスにボタンのテキストが表示される様に したいのですが、 「"window.opener.document."はNULLかオブジェクトではありません。」 というエラーが表示されてしまいます。 子画面のvb Protected Sub but_click(ByVal sender As Object, ByVal e As System.EventArgs) Dim txt As Button = 表示form.Row.FindControl(CType(sender, Button).Text) 'スクリプトの実行 ClientScript.RegisterStartupScript(Me.GetType(), _ "hyouji", _ "<script type='text/javascript'>" & _ "window.opener.document.forms[FormView1].表示TextBox.value=txt</script>") End Sub 申し訳ございませんが宜しくお願いします。 | ||||||||||||
|
投稿日時: 2008-06-16 23:09
> Dim txt As Button = 表示form.Row.FindControl(CType(sender, Button).Text)
このtxt はサーバーサイドで > "<script type='text/javascript'>" & _ >"window.opener.document.forms[FormView1].表示TextBox.value=txt</script>") こっちの txt はクライアントですけど。 それから、FormView1 も変ですね。 forms は名前かID名称を取りますから。 | ||||||||||||
|
投稿日時: 2008-06-17 08:40
ぴあちゃん様 ありがとうございます。
txtに対するご指摘を受け下記に変更しましたが、 エラーは変わりませんでした。 Protected Sub but_click(ByVal sender As Object, ByVal e As System.EventArgs) Dim txt As String = Me.n.text 'スクリプトの実行 ClientScript.RegisterStartupScript(Me.GetType(), _ "hyouji", _ "<script type='text/javascript'>" & _ "window.opener.document.forms[aspnetForm].表示TextBox.value=txt</script>") End Sub 「window.opener」は子画面を開いたフォームが親画面になると思うのですが、 認識してくれません。 | ||||||||||||
|
投稿日時: 2008-06-17 08:55
下記のサイトは参考になりますか
http://dobon.net/vb/dotnet/form/accessanotherformdata.html | ||||||||||||
|
投稿日時: 2008-06-17 09:39
このエラーに関しては、私には「子画面を開くための JavaScript があやしいのではないか?」という以上のことを言うことができません。 # 子画面を開くための JavaScript に関する情報が不足しているので、それ以上の判断ができません。 ただ、仮にそのエラーの原因がわかって対応したとしても、そのままでは動作しません。 直さないと動かない箇所、直したほうがよい箇所はいろいろあるのですが、総じていえば「サーバ側からこう書いてやれば、クライアント側のJavaScriptがこうなるので動く」ということについて理解が足りないように思えます。
そのページはWindowsフォームに関する内容ですので、Webアプリである今回の質問とは関係がありません。 [ メッセージ編集済み 編集者: rain 編集日時 2008-06-17 09:44 ] | ||||||||||||
|
投稿日時: 2008-06-17 10:32
One.net様、rain様 ありがとうございます。
子画面を開くためのコードは、 http://www.atmarkit.co.jp/fdotnet/vblab/aspnetforvb04/aspnetforvb04_01.html を参考に下記の様にしています。 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim sbScript As New System.Text.StringBuilder() Dim btn As Button = FormView1.Row.FindControl("表示") sbScript.Append("ret = window.open('hyouji.aspx','hyouji','Width=300,Height=300;');") sbScript.Append("return false;") btn.Attributes("onclick") = sbScript.ToString() End Sub
ご助言頂いている身分で恐縮ですが、 理解が足りないからこそ時間をかけて、インターネットや参考書を広げて自身なりに調べています。(この質問内容だけで3日間) 理解出来ているのであれば、質問はしないと思います。 | ||||||||||||
|
投稿日時: 2008-06-17 10:54
念のため確認なんですが、上のforms[aspnetForm].表示TextBox というコードで 親ウィンドウのFormViewの中にあるテキストボックスを参照しようとされてます? _________________ //--- あやのこうじ@RapidExpress | ||||||||||||
|
投稿日時: 2008-06-17 11:01
FormView は使ったことが無いので分からないのですが。
普通の Window であれば、以下で動作します。 親 Window
子 Window
window.opener.document.forms[FormView1].表示TextBox.value=txt で指定している Form 名と TextBox 名は正しいですか? Form 名をシングルクォーテーションで括ってみてもダメですか?
できれば、スルーして欲しかったですね(^_^;) |
1|2|3
次のページへ»