- PR -

フレームを利用したshowmodaldialogの値引渡しについて

1
投稿者投稿内容
がちゃ
会議室デビュー日: 2005/02/10
投稿数: 7
投稿日時: 2005-03-29 15:21
親画面(WebForm1)で入力した値を利用して子画面(WebForm3)にデータを表示し、
そのデータを加工してテーブルにセットする、という処理をしています。
(子画面から親画面に返る値はありません)

@親画面(WebForm1)のTextbox1に値を入力して、Button1を押下
 →クエリ文字列にTextbox1の値をセットして、フレーム(WebForm2)を開く
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strProjectCode As String = Me.TextBox1.Text
Dim strJScript As String

strJScript = "<SCRIPT Language=""Javascript"">" & _
"var rtnVal=showModalDialog('WebForm2.aspx?PROJECT_CODE=" & strProjectCode & "','','dialogWidth:440px; dialogHeight:670px');" & _
"</SCRIPT>"
Me.Controls.Add(New LiteralControl(strJScript))

End Sub

Aフレーム(WebForm2)を利用して子画面(WebForm3)を開く
<frameset>
<frame name="contents" src="WebForm3.aspx">
</frameset>

B子画面にて、親画面でセットした値を取得する
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' ページを初期化するユーザー コードをここに挿入します。
Dim str As String

'プロジェクトコード取得
str= Request.QueryString("PROJECT_CODE")

End Sub

showmodaldialogで子画面を表示していますが、Post_back時に複数のウィンドウが開いてしまったためフレームを使用する方法に変更しました。
ところが、クエリ文字列を利用した値の引渡しが無効になってしまいました。
(BのRequest.QueryString("PROJECT_CODE") = Nothing)
これは何が原因なのでしょうか?
対応方法がありましたら、ぜひご教授ください。
よろしくお願いします。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-03-29 15:32
引用:

<frame name="contents" src="WebForm3.aspx">



WebForm3にはクエリ文字列を渡してないからです。
WebForm2とWebForm3は全くの別ページです。
がちゃ
会議室デビュー日: 2005/02/10
投稿数: 7
投稿日時: 2005-03-29 15:49
burton999さん、ご返答ありがとうございました。
あまりの無知っぷりにお恥ずかしい限りです。

WebForm2にて一度値を退避させたあと、
改めてWebForm3に引渡したところうまくいきました。
かなり無理やりな気がするのですが、もっとスマートな方法はあるのでしょうか?
1

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