- PR -

メッセージ表示後、画面をクローズしたい

1
投稿者投稿内容
あや☆
常連さん
会議室デビュー日: 2005/07/28
投稿数: 36
投稿日時: 2005-10-12 09:43
こんにちは☆
C#.NET でWebアプリの開発をしております。

C#のクリックイベントの中で、何らかの処理をやらせて、メッセージを表示させ、
OKが押されたらその画面を閉じるという処理をやらせたいのですが、うまく動作しません。
ソースの抜粋です。

private void btn_Click(object sender, System.EventArgs e)
{
//何らかの処理
  
  //メッセージ表示
jsResult = "<script language='VBScript'>";
  jsResult +="Var = MsgBox (\"終了します。\", 64,\"終了\")";
  jsResult += "</script>";
  Page.RegisterStartupScript("jsResultInCurrentWindow",jsResult);

  //画面クローズ
  jsResult2 = "<script language='javascript'>";
  jsResult2 += "window.close();";
  jsResult2 += "</script>";
  Page.RegisterStartupScript("jsResultInCurrentWindow",jsResult2);
}

メッセージ表示・画面クローズ共に、一方だけを記述すればそれぞれ上手く動作します。
両方記述すると、メッセージは表示されますが、OKを押下した後も画面は閉じません。
このようにスクリプトを複数続けて実行させることはできないのでしょうか?

また、他の方法でもいいので、解決法等ありましたら、ご教授ください。
よろしくお願いします。
葉瀬崎浩樹
大ベテラン
会議室デビュー日: 2005/06/28
投稿数: 115
お住まい・勤務地: 兵庫県
投稿日時: 2005-10-12 10:00
こんにちは
コード:
Page.RegisterStartupScript("jsResultInCurrentWindow",jsResult); 
Page.RegisterStartupScript("jsResultInCurrentWindow",jsResult2);


RegisterStartupScriptを呼び出す際のKeyが重複しているため、
2回目以降のScriptが設定されてないのだと思います。
お望みのScriptが吐き出されているか、HTMLを確認してみて下さい。

引用:
MSDNより引用
スクリプトを key で識別することにより、複数のサーバー コントロール インスタンスは、出力ストリームに 2 回出力せずにスクリプト ブロックを要求できます。
同じ key パラメータ値のスクリプト ブロックは、重複であると見なされます。


Page.RegisterStartupScript メソッド
あや☆
常連さん
会議室デビュー日: 2005/07/28
投稿数: 36
投稿日時: 2005-10-12 10:13
葉瀬崎浩樹さん、ご返信ありがとうございました。

Page.RegisterStartupScript("jsResultInCurrentWindow1",jsResult);
Page.RegisterStartupScript("jsResultInCurrentWindow2",jsResult);

というように、Keyを変えると、うまく動作しました。
初歩的なことも知らなくてすいませんでした。
大変助かりました。
ありがとうございます。
また、質問することもあると思いますが、よろしくお願いいたします。
1

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