- PR -

showModalDialogで開いたダイアログ内でタイマーを使用した場合の閉じ方

1
投稿者投稿内容
レイル
常連さん
会議室デビュー日: 2008/10/14
投稿数: 37
投稿日時: 2008-11-20 11:49
お世話になります。

ASP.NET2005で作成しております。

showModalDialogでダイアログを表示させ、System.Timers.timer(AutoReset=false)を使用し、「処理中」のGIFアニメを表示後に重い処理を実施しております。

そこで重い処理の応答が帰ってきたら、window.closeで閉じたいのですが、別スレッドになっているためか、画面を閉じる事が出来ませんでした。

親画面側で閉じることを確認しておりますが、親画面で処理を継続していると、子画面の描画が始まらないため、子画面側で処理を行う必要があります。

ご助言を御願いします。

[親]
window.showModalDialog('./CreateExcel.aspx', 'CreateStart',''); 開く
window.open('about:blank','CreateStart','').close();    閉じる

#重い処理:編集不可のDLLのメソッドを使用
もん吉
常連さん
会議室デビュー日: 2008/05/16
投稿数: 36
投稿日時: 2008-11-20 13:37
showModalDialogで開いた画面って開いた画面からしか
閉じられないんじゃないでしょうか。

引用:

window.showModalDialog('./CreateExcel.aspx', 'CreateStart',''); 開く
window.open('about:blank','CreateStart','').close();    閉じる



というか、これでは閉じることはできないと思います。
window.openとwindow.showModalDialogは違うものなので・・・。

Ajaxで処理させるとかしたらどうでしょう。

レイル
常連さん
会議室デビュー日: 2008/10/14
投稿数: 37
投稿日時: 2008-11-20 14:24
返信有難う御座います。

引用:

showModalDialogで開いた画面って開いた画面からしか
閉じられないんじゃないでしょうか。


開いた画面からは既に記述させて頂いたコードで閉じる事ができますが、
showModalDialogで開いている以上、子画面が閉じるまで親画面では操作できません。
"window.open('about:blank','CreateStart','').close();"

AJAXは使用してはならないとの事でしたので質問させて頂きました。

画像はIMGタグで表示しており、定期的にOnloadが発生するため、ポストバックを行いwindow.closeを実施してみましたが、画面はcloseできませんでした。
ぴあちゃん
ぬし
会議室デビュー日: 2008/02/07
投稿数: 287
投稿日時: 2008-11-20 16:27
書いてある意味がさっぱりわからないのですが、
もう少し整理してみてもらえますか?

モーダルダイアログの中で
・何を実行する? 待ち受けアニメはどーやって動かして、DLLはどこに関わってくる?
・URLは? 違うドメインの画面をモーダルダイアログで開いているのか?
・onload で定期的って何? 意味がわかりません。
・window.close() はどこに書いているのか?
・モーダルダイアログとタイマーの関係は?



todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2008-11-21 18:30
何れにせよ、Webでサーバサイドのタイマーを使うのは駄目でしょう。

魔法の杖シンドローム
http://www.atmarkit.co.jp/fdotnet/opinion/kawamata/2002_07.html

WebフォームでTimerを使用したい
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=35670&forum=7

ASP.NET 1.1 長い処理中に「お待ちください」画面を表示する
http://blogs.wankuma.com/jitta/articles/19448.aspx

[ メッセージ編集済み 編集者: todo 編集日時 2008-11-21 19:04 ]
1

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