- PR -

showModelessDialogについて

投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2006/05/30
投稿数: 23
投稿日時: 2006-05-30 18:23
初めて書き込みします。

現在、ASP.netを使用してWeb系のシステムを構築しているのですが、showModelessDialogの機能でよくわからないバグが発生しています。

親画面からボタンを押してサブ画面を起動しているのですが、サブ画面を開いたときに、Page_Loadのイベントが発生せず、初期画面に意図しないデータがDateBindされてしまいます。

何か対策等ご存知の方、ご教授お願いします。

ちなみに開発環境ですが・・・

VisualStudio.net2003

SQL Serber

です。よろしくお願いします。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2006-05-30 18:40
引用:

紅椿さんの書き込み (2006-05-30 18:23) より:
Page_Loadのイベントが発生せず、


Loadイベントが発生していないというのはどのようにして確認しましたか。
ブレークポイントで止まらないですか。それともPage_Load()に書いてある命令が実行されていないようにみえるからLoadイベントが起きていないのだろうという推測ですか?

showModelessDialogではなくwindow.open()等で開くとLoadイベントが発生しますか?

引用:

初期画面に意図しないデータがDateBindされてしまいます。


意図しないデータというのは何のデータか分かりますかね。
例えば、前回表示していたデータとか。
別のユーザーが直前に表示したデータとか。


しかし、showModelessDialogなんてのがあるのを知らなかった。

[ メッセージ編集済み 編集者: 一郎 編集日時 2006-05-30 18:41 ]
未記入
常連さん
会議室デビュー日: 2006/05/30
投稿数: 23
投稿日時: 2006-05-30 19:00
返信ありがとうございます。


引用---------------------------------------------------------------------------
Loadイベントが発生していないというのはどのようにして確認しましたか。
ブレークポイントで止まらないですか。それともPage_Load()に書いてある命令が実行されていないようにみえるからLoadイベントが起きていないのだろうという推測ですか?
-------------------------------------------------------------------------------

↑Page_Load()に書いてある命令が実行されていないことから推測しました。

引用---------------------------------------------------------------------------
意図しないデータというのは何のデータか分かりますかね。
-------------------------------------------------------------------------------

↑ある項目のデータが開いたときに必ず表示されます。
登録ボタンや削除ボタンを押した時に初めてPage_Loadの処理が実行されます。


またwindow.open()ではサブ画面を開いたときに必ず親画面の前面に表示されないのでshowModelessDialogを使用しています。

どうすればいいでしょうか??
Yam
大ベテラン
会議室デビュー日: 2003/09/13
投稿数: 179
お住まい・勤務地: だんじり祭りの地
投稿日時: 2006-05-30 19:28
引用:

紅椿さんの書き込み (2006-05-30 19:00) より:
どうすればいいでしょうか??


先ず、これで確認して下さい。
引用:

一郎さんの書き込み (2006-05-30 18:40) より:
Loadイベントが発生していないというのはどのようにして確認しましたか。
ブレークポイントで止まらないですか。



話はそれからです。

一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2006-05-31 10:10
引用:

Yamさんの書き込み (2006-05-30 19:28) より:
先ず、これで確認して下さい。


そうですね。
VisualStudioを使っているのですから、デバッガを使ってブレークポイントで止めることができますよね。試してみてください。

引用:

紅椿さんの書き込み (2006-05-30 19:00) より:
またwindow.open()ではサブ画面を開いたときに必ず親画面の前面に表示されないのでshowModelessDialogを使用しています。


いや、実際納品するプログラムはどうであれ、原因の切り分けのために試してみてくださいということです。
もしwindow.open()だとPage_Loadが起きるのであれば、showModelessDialogを使っているのが原因と言うことですよね。
未記入
ベテラン
会議室デビュー日: 2003/06/26
投稿数: 76
投稿日時: 2006-05-31 14:15


[ メッセージ編集済み 編集者: 未記入 編集日時 2007-01-19 21:56 ]
Yam
大ベテラン
会議室デビュー日: 2003/09/13
投稿数: 179
お住まい・勤務地: だんじり祭りの地
投稿日時: 2006-05-31 15:20
引用:

紅椿さんの書き込み (2006-05-30 19:00) より:
登録ボタンや削除ボタンを押した時に初めてPage_Loadの処理が実行されます。


スレ主からの応答がないので勝手に推測するとPage_Load内のIsPostBack辺りがぁゃιぃ(*゚ー゚)
未記入
常連さん
会議室デビュー日: 2006/05/30
投稿数: 23
投稿日時: 2006-05-31 15:34
返信が遅くなって申し訳ありません。

皆さん、アドバイスありがとうございます。

デバックを実行してみたところ、やはりサブ画面を起動した段階でPage_Loadの処理がはしっていませんでした。

ここからは私の推測なのですが、サブ画面を起動する直前に、セッションに必要な情報を登録しています。サブ画面を起動して、サーバからセッションの情報を取得しているのですが、親画面がセッションの情報を登録する前に、サブ画面が開いてしまい、セッションの情報が取得できないからPage_Loadの処理が実行されないのでしょうか?
そういった現象は考えられますか?


ちなみに実際のコードですが・・・

Private Sub ボタン_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ボタン.Click
Session.Add("セッション情報1", "画面の情報1")
Session.Add("セッション情報2", "")

Dim St As String
St = "<SCRIPT LANGUAGE='javascript'>"
St &= "window.showModelessDialog('" & URL & "',window,'status:yes;dialogwidth:500px;dialogheight:428px;toolbar:yes;resizable:yes;scrollbars:no;help:no');"
St &= "</SCRIPT>"
Response.Write(St)

End Sub


こんな具合になってます。

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