2016-08-05 8 views
1

私はモーダル決算に問題がある... だから私は、ボタンが最初にこのようになりますJS機能ChangeModalFunctionを呼び出すことモーダル閉じるモーダル - C#

<div id="Reporting_footer" class="modal-footer"> 
    <asp:Button ID="btnReportingExport" runat="server" Text="Export" 
       CssClass="btn btn-default" OnClientClick="ChangeModalFunction();" 
       OnClick="btnReportingExport_Click"/> 
    <input id="Submit1" class="btn btn-default" type="submit" data-dismiss="modal" 
      value="Cancel" /> 
</div> 

の内側にあります。このボタンbtnReportingExportを持っています

function ChangeModalFunction() { 
     $('#Reporting_modal').modal('hide'); 
     $('#GenerateReport_modal').modal('toggle'); 
} 

だから、僕はモーダル隠すだけレポートを生成するために、その上にいくつかの.gifアニメーションを持つ別のモーダルを示しています。私のメインイベントは、それはこのようになります応答 にそれをビュンと入れて、PDFへの変換、エクセル上でそれを入れて、SQLからデータを取って、ものの負荷を行いbtnReportingExport_Click起こることをした後...

Response.Clear(); 
Response.ContentType = "application/x-zip-compressed"; 
Response.AddHeader("Content-Disposition", 
    string.Format("attachment; filename=\"{0}.zip\"", QuestionnaireName)); 

Response.WriteFile(FilePathZip); 

だから何私は、関数が単純である

ScriptManager.RegisterStartupScript(this, this.GetType(), 
            "CloseModal", "Closepopup();", true); 

Response.Flush(); 

Closepopupもう

を達成したいが、無残に失敗すると、私は私の応答をフラッシュする直前に、それに .gifでモーダルを閉じることです...と私はそれを行うにはどのように何の手掛かりを得ませんでした機能しない

function Closepopup() { 
    $('#GenerateReport_modal').modal('hide'); 
} 

その長いコード旅行の後、私の問題が表示され、ファイルのダウンロードダイアログが表示され、モーダルはまだ起動していて、バックグラウンドで実行されています。そして私はそれを修正する方法がすべて不足しています。Response.Flush()を実行する前に、どのようにコードからモーダルを隠すことができますか?

が助けてくれてありがとう、私はテキスト

答えて

2

興味深いシナリオの壁のために謝罪、私は次の解決方法を試して、あなたを希望: は(あなたともそれを行うことができますjqueryのを使用してAJAXリクエストを経由してzipファイルのエンドポイントを呼び出しますバニラジャバスクリプト)。そして、このイベントonreadystatechangeをあなたの要求に結びつけてください。

$(".submitButton").click(function(){ 
    var xhr = $.ajax({url: "/data.zip", 
    success: function(result){ 

    }}); 
    xhr.onreadystatechange = function() { 
     if(xhr.readyState === 4) 
      Closepopup(); 
    }; 
}); 

このイベントは、5つの異なる状況で発生します:

  1. 0:
  2. を初期化しない要求する
  3. 1:サーバー接続確立
  4. 2:要求が受信
  5. 3:処理要求
  6. 4:要求が完了し、応答が準備完了です。

このステータス4を取得すると、ダイアログが同時に開き、ポップアップウィンドウを閉じることができると思います。

+0

ありがとう、これは正しい方法だと理解しています...しかし、私のAJAXの知識はこれを達成するのが悪いです... @ JABFreewareの助けを借りてチェックされるクッキーを作成するクッキーの値が変更された後、レポートの作成が開始されると、私はモーダルを閉じてクッキーを破棄し、チェックの間隔を停止します – Veljko89

関連する問題