- PR -

子画面から親画面のテキストボックスに値を入れたい

投稿者投稿内容
ぷり
ベテラン
会議室デビュー日: 2008/02/22
投稿数: 60
投稿日時: 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/02/07
投稿数: 287
投稿日時: 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/02/22
投稿数: 60
投稿日時: 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」は子画面を開いたフォームが親画面になると思うのですが、
認識してくれません。


One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-06-17 08:55
下記のサイトは参考になりますか
http://dobon.net/vb/dotnet/form/accessanotherformdata.html
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-06-17 09:39
引用:

ぷりさんの書き込み (2008-06-16 13:17) より:

「"window.opener.document."はNULLかオブジェクトではありません。」



このエラーに関しては、私には「子画面を開くための JavaScript があやしいのではないか?」という以上のことを言うことができません。
# 子画面を開くための JavaScript に関する情報が不足しているので、それ以上の判断ができません。

ただ、仮にそのエラーの原因がわかって対応したとしても、そのままでは動作しません。
直さないと動かない箇所、直したほうがよい箇所はいろいろあるのですが、総じていえば「サーバ側からこう書いてやれば、クライアント側のJavaScriptがこうなるので動く」ということについて理解が足りないように思えます。

引用:

One.netさんの書き込み (2008-06-17 08:55) より:
下記のサイトは参考になりますか
http://dobon.net/vb/dotnet/form/accessanotherformdata.html


そのページはWindowsフォームに関する内容ですので、Webアプリである今回の質問とは関係がありません。


[ メッセージ編集済み 編集者: rain 編集日時 2008-06-17 09:44 ]
ぷり
ベテラン
会議室デビュー日: 2008/02/22
投稿数: 60
投稿日時: 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

引用:
総じていえば「サーバ側からこう書いてやれば、クライアント側のJavaScriptがこうなるので動く」ということについて理解が足りないように思えます。



ご助言頂いている身分で恐縮ですが、
理解が足りないからこそ時間をかけて、インターネットや参考書を広げて自身なりに調べています。(この質問内容だけで3日間)
理解出来ているのであれば、質問はしないと思います。


RapidExpress
常連さん
会議室デビュー日: 2007/11/11
投稿数: 42
お住まい・勤務地: おおさか
投稿日時: 2008-06-17 10:54
コード:
ClientScript.RegisterStartupScript(Me.GetType(), _ 
"hyouji", _ 
"<script type='text/javascript'>" & _ 
"window.opener.document.forms[aspnetForm].表示TextBox.value=txt</script>") 

End Sub 


念のため確認なんですが、上のforms[aspnetForm].表示TextBox というコードで
親ウィンドウのFormViewの中にあるテキストボックスを参照しようとされてます?
_________________
//---
 あやのこうじ@RapidExpress
ひろれい
ぬし
会議室デビュー日: 2006/03/02
投稿数: 486
お住まい・勤務地: 万博開催地
投稿日時: 2008-06-17 11:01
FormView は使ったことが無いので分からないのですが。
普通の Window であれば、以下で動作します。

親 Window
コード:
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim sbScript As New System.Text.StringBuilder()

        sbScript.Append("ret = window.open('hyouji.aspx','hyouji','Width=300,Height=300;');")
        sbScript.Append("return false;")
        Button1.Attributes("onclick") = sbScript.ToString()

    End Sub



子 Window
コード:
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        'スクリプトの実行 
        ClientScript.RegisterStartupScript(Me.GetType(), _
        "hyouji", _
        "<script type='text/javascript'>" & _
        "window.opener.document.forms['form1'].TextBox1.value='OK!';</script>")

    End Sub



window.opener.document.forms[FormView1].表示TextBox.value=txt
で指定している Form 名と TextBox 名は正しいですか?

Form 名をシングルクォーテーションで括ってみてもダメですか?

引用:

ぷりさんの書き込み (2008-06-17 10:32) より:

ご助言頂いている身分で恐縮ですが、
理解が足りないからこそ時間をかけて、インターネットや参考書を広げて自身なりに調べています。(この質問内容だけで3日間)
理解出来ているのであれば、質問はしないと思います。



できれば、スルーして欲しかったですね(^_^;)

スキルアップ/キャリアアップ(JOB@IT)