- PR -

Page.ClientScript.RegisterStartupScript で親画面の ラベルに 値を渡したいのでしが。。。

1
投稿者投稿内容
vion
会議室デビュー日: 2007/10/03
投稿数: 13
投稿日時: 2007-10-05 10:26
いつもお世話になっております。
ASP.NET(VB)で開発しております。

showModalDialogで親画面から子画面を開いて、子画面のVB側でPage.ClientScript.RegisterStartupScriptを利用してある値を親画面のラベルに渡した後、自分が閉じる ことを実現したいのですが、うまく行きません。誰かが助けてください。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-10-05 11:24
試したコードは?それで、どんな現象がおきましたか?
何もおきないとか、ラベルに渡すのだけはうまくいったとか、javascriptエラーになるとか。
vion
会議室デビュー日: 2007/10/03
投稿数: 13
投稿日時: 2007-10-05 11:48
Dim sb As New System.Text.StringBuilder
sb.Append("window.opener.document.getElementById('lavel1').value = '" & sss & "'; ")
Page.ClientScript.RegisterStartupScript(Me.GetType(), "gggg", sb.ToString, True)

これて実行したところ、window.opner.documentはNullまたはオブジェクトではありません というエラーが出ました。

[ メッセージ編集済み 編集者: vion 編集日時 2007-10-05 11:54 ]
kiyokura
ベテラン
会議室デビュー日: 2007/08/08
投稿数: 69
お住まい・勤務地: 岡山
投稿日時: 2007-10-05 12:01
showModalDialogは、window.openで開いた場合と違い、親画面にopnerでアクセスできません。

解決方法ですが、showModalDialogは任意の値をshowModalDialogメソッドの戻値として返せますので、

・showModalDialog上の処理 : 戻り値に必要な値を設定し、closeする
・親画面の処理:受け取った値をラベルに設定する

という流れはどうでしょうか。

vion
会議室デビュー日: 2007/10/03
投稿数: 13
投稿日時: 2007-10-05 12:11
kiyokuraさん:
 ご指摘ありがとうございます。showModalDialogは親画面にopnerでアクセスできないですね。
 それでは、Page.ClientScript.RegisterStartupScript(Me.GetType(), "ggg", "returnValue=" + aaa + "; window.close();", True)
で戻り値に必要な値を設定し、closeしたほうがいいですよね。
受け取った値をラベルに設定するのはどうすればいいですか。経験すくないですので、よろしくお願いします。
kiyokura
ベテラン
会議室デビュー日: 2007/08/08
投稿数: 69
お住まい・勤務地: 岡山
投稿日時: 2007-10-05 13:15
先ほども申しましたとおり、showModalDialogでreturnValueにセットされた値は、showModalDialogの戻値になります。
ですので、呼び出し側(親画面)でshowModalDialogをコールする際に、たとえば以下のようにすれば、
とりあえずの目的は達せられると思います。
#何もされずに×ボタン等でダイアログが閉じられた際にはnullが返るはずですから、
#実際には最低限、それらを考慮した処理を行う必要があると思います。

document.getElementById('lavel1').value = showModalDialog(xxxxxx);
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2007-10-05 15:05
あと、lavel1っていわゆるASP.NETのLabelですよね?( <asp:Label ってやつ)
それだとvalueプロパティで中身の文字列は替えられないと思います。
innerTextとか使わないと。
vion
会議室デビュー日: 2007/10/03
投稿数: 13
投稿日時: 2007-10-05 15:17
returnValue=showModalDialog("./aaa.aspx",dialogWidth=780px;dialogHeight=720px;resizable=1");

親画面のfunctionで上記のように書いてPage.ClientScript.RegisterStartupScript(Me.GetType(), "ggg", "returnValue=" + aaa + "; window.close();", True) から返されたreturnValueを取得してラベルに配置しました。

皆さん、ありがとうございます。


[ メッセージ編集済み 編集者: vion 編集日時 2007-10-05 15:18 ]

[ メッセージ編集済み 編集者: vion 編集日時 2007-10-05 15:20 ]
1

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