- PR -

フレーム分けした子画面にセッション変数を渡す方法

投稿者投稿内容
PG新人
会議室デビュー日: 2006/01/21
投稿数: 18
お住まい・勤務地: 東京
投稿日時: 2006-02-01 15:03
たつごろー様

お世話になります。

たつごろー様に提示して頂いた下記の手段で調査してみます。

また
>2番目のPage_Load時というのはどういうときでしょうか。
かるあ様の図でいうと3.フレームの要素1のPage_loadです。


かるあ様

お世話になります。

現在の状況は、
>1のセッションは1のPostBackでは取得できるが、
>2,3では取得できない

取得できる時と出来ない時があります。

>2のセッションは2のPostBackでも取得できない
>もちろん、3でも取得できない

そのとおりです。


現在行った調査では、かるあ様の図で説明を致しますと
1.起動ページは、下記のような処理になっております。

□ボタン押下後
session("A") = 値(半角英数で100バイトくらいの文字です)
alert(session.sessionID & ":" & session("A"))
window.open('"webform1.aspx?Prm1=" & session("A") & "');"

2.フレームページ
□page_load時
response.write(session("A")) ←表示出来てる時と出来ない時がある
response.write(request.params("Prm1"))  ←取得できている
session("B") = request.params("Prm1")
response.write(session("B"))       ←取得できている

3フレームの要素1,2
□page_load時
if isnothing(session("A")) = false then
処理A
elseif isnothing(session("B")) = false then
処理A
else
エラーメッセージ表示 ←ここが表示されます。
end if





たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2006-02-01 15:23
コード:
□ボタン押下後
session("A") = 値(半角英数で100バイトくらいの文字です)
alert(session.sessionID & ":" & session("A"))                 
window.open('"webform1.aspx?Prm1=" & session("A") & "');"

2.フレームページ
□page_load時
response.write(session("A"))             ←表示出来てる時と出来ない時がある
response.write(request.params("Prm1"))  ←取得できている
session("B") = request.params("Prm1")
response.write(session("B"))       ←取得できている

3フレームの要素1,2
□page_load時
if isnothing(session("A")) = false then 
    処理A
elseif isnothing(session("B")) = false then 
    処理A
else
    エラーメッセージ表示                 ←ここが表示されます。
end if


VB.NETとJScriptが混在しているように見えるのですが、私の間違いでしょうか。
この辺のコードを、手打ちではなく、コピペではりつけていただいたほうがいいかもしれません。

_________________
たつごろー
codeseek
こみゅぷらす
PG新人
会議室デビュー日: 2006/01/21
投稿数: 18
お住まい・勤務地: 東京
投稿日時: 2006-02-01 16:17
たつごろー様

お世話になります。

javascriptのところは、DBに接続してファイル名を取得する方法を
取っていた為、コピペすると長くなるので省かせて頂きました。。。

□ボタン押下後
session("A") = 値(半角英数で100バイトくらいの文字です)
str="<script language=""javascript"">"
str&="<!--"
str&="alert(session.sessionID & ":" & session("A"));"
str&="window.open('"webform1.aspx?Prm1=" & session("A") & "');"
str&="-->"
str&="</script>"
response.write(str)

2.フレームページ
□page_load時
response.write(session("A")) ←表示出来てる時と出来ない時がある
response.write(request.params("Prm1"))  ←取得できている
session("B") = request.params("Prm1")
response.write(session("B"))       ←取得できている

3フレームの要素1,2
□page_load時
if isnothing(session("A")) = false then
処理A
elseif isnothing(session("B")) = false then
処理A
else
エラーメッセージ表示 ←ここが表示されます。
end if
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2006-02-01 17:09
引用:

javascriptのところは、DBに接続してファイル名を取得する方法を
取っていた為、コピペすると長くなるので省かせて頂きました。。。



間違いの元ですので、出来る限り元のコードを乗せて頂いたほうが良いと
おもいます。もちろん、無用に長いとはっきり判るところは削除してもらって
もかまいません。

コード:
str&="alert(session.sessionID & ":" & session("A"));" 


JScriptでSessionを見てますか?
書き間違いですか?

コード:
response.write(session("A")) ←表示出来てる時と出来ない時がある


提示していただいたコードを見る限り、その現象になりえると思います。
このページに来る前の時点で、session("A")を何がしかの文字列で埋めてみては
いかがでしょうか。

どうしてもうまくいかなくて、どうにもならなくなったら、

いったん、そのプログラムのデバッグをやめて、
同じ挙動を起こす最小限のプログラムを作ってみてください。
問題が起こる部分を見つけやすくなります。

ステップ実行もためしてください。


_________________
たつごろー
codeseek
こみゅぷらす
PG新人
会議室デビュー日: 2006/01/21
投稿数: 18
お住まい・勤務地: 東京
投稿日時: 2006-02-01 20:43
たつごろー様

お世話になってます。

うまくセッション変数の値を取得する方法を見つけました(^0^)/

まず呼び出し元のpage_loadに下記の処理を追加します。
※とりあえず、ボタンを押す前に下記の処理をボタンに組み込めばいいと思います。

ボタン押下時に新しいウィンドウを開いて、そのウィンドウをターゲットにします。
button.Attributes("onclick") =
"window.open('','subWin','');document.Form1.target='subWin';"

次にボタンの処理に下記の処理を追加します。
※ターゲット(新しいウィンドウにフレームページを表示する。)
Server.Transfer(開くファイル名(フレームページ))

上記のやり方でセッション変数の値が消えずに取得できるようになりました。
結構力技でしたが・・・

いろいろなご教授ありがとーございましたm(__)m



かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-02-01 21:30
ボタンが押されたときに
セッション変数に値を格納して
別ページを呼び出したいならこんな感じじゃないかな

コード:

Private Sub cmdOpen_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles cmdOpen.Click
Dim script As String = "<script language='JavaScript'>window.open('FramePage.aspx')</script>"
Session("aaa") = DateTime.Now.ToString
Page.RegisterStartupScript("startup", script)
End Sub



ただこれだと、ページが読み込まれるたびに
サブウインドウを呼び出しちゃいますけど

[ メッセージ編集済み 編集者: かるあ 編集日時 2006-02-01 21:34 ]

[ メッセージ編集済み 編集者: かるあ 編集日時 2006-02-01 21:35 ]

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