ModalPopupExtender が ボタンの中で、Response.Write, Response.Flush, Response.End すると閉じないんです。
ちょっと理由を調べてみました。
ModalPopupExtender が Response.Write すると閉じない?
以前、調べたのですが、ModalPopupExtender は、ボタンを UpdatePanel の外に置けば閉じるようです。
ところが、UpdatePanel の外に置いてあるボタンであっても、
Response.Write, Response.Flush, Response.End
を実行するとそのダイアログは閉じないようです。
本件、調べてみる限り、この動きは仕様のようです。
ここには、次のように書いてあります。
The problem is that
Response.End();
kills all action (well, as it should), so the modal window itself doesn't close.
(Response.End()はすべてのアクションを止めます。
よってモーダルダイアログは閉じません。)
よって、ボタンを押すことで、Response.WriteしてExcel出力をするとかの処理を行っていた場合、ダイアログを閉じる処理は別のスレッドを使って行う必要があります。
Response.Writeしたというステータスを保持しておいて、
1秒おきにTimerを使って監視して、ステータスによってダイアログを閉じるのがベストではないでしょうか。
プログラミングの無料レッスン体験
約8,000名の受講生と80社以上の導入実績のあるプログラミングやWebデザインのオンラインマンツーマンレッスンCodecamp
<Codecampの特徴>
1 現役エンジニアによる指導
2オンラインでのマンツーマン形式の講義
3大手企業にも導入されている実践的なカリキュラム
↓無料体験レッスン実施中です。
コメント