表示ローディングメッセージExcelに結果セットをエクスポート中
-
22-08-2019 - |
質問
私は、ASP.NETとC#を使用していますし、Excelに設定され、非常に大きな成果を輸出しています。私の輸出のコードが実行されている間、私は、ユーザーが自分の要求を処理している知っているので、「ロード」アニメーションGIFを表示したいと思います。私は、マルチスレッドでこれをやろうとしてきたが、私はそれに非常に精通していないです。誰もが正しい方向に私を導くことはできますか?ありがとう!
ジョン
解決
は、サーバー上でマルチスレッドをやろうとしていますか?私がお勧めすると、クライアント側でサーバに投稿する前に、メッセージをお待ちください上のjavascriptの番です。そして、クライアント側で、あなたのメッセージをオフに掲示行われたとき。
あなたの実際のセットアップについての詳細を知らなくても、私はあまりさらに助けることはできませんが、最後の時間は、私はこれらの線に沿って何かをした、これを実装します:
我々が表示され、ウィンドウを引き継ぐためのjQueryを私はdiv要素を設定して使用してPrintLoadingPanelと呼ばれるdiv要素を持っていると仮定します:
$("#printLoadingPanel")
.css({display:"block",top:"0px",left:"0px",height:screen.availHeight});
私は、我々が印刷を行っているかどうかのチェックを開始します1/2秒間隔でタイマーを開始します。私は唯一の生成と小さなPDFのように私は迅速に対応する必要をダウンロードしています。あなたのレポートが本当に遅いされている場合は、これを微調整したい場合があります:
window.setTimeout(checkIfDoneDownload,500);
私たちは、ファイルを生成し終えて、それをダウンロードした場合、そして、私のCheckIfDoneDownload機能は、サーバーとのチェックを打ちます。私は、WCFサービスを有効にAJAXを呼び出すためにもう一度ここではjQueryを使用しています。あなたはPageMethodsまたはサーバーへのコールバックに他の方法でこれを置き換えることができます。
function checkIfDoneDownload()
{
$.ajax({
type: "POST",
url: "../Services/Utilities.svc/IsPrintDownloadDone",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
if (msg.d)
{
$("#printLoadingPanel").css("display","none");
}
else {window.setTimeout(checkIfDoneDownload,500);}
},
error: function (xhr, textStatus, errorThrown) {
if (xhr.status==12030) {checkIfDoneDownload();}
}
});
}
これで、サーバー側では、私はHTTPハンドラを経由して私のダウンロードを生成しています。基本的に、それが最初に行うことは、falseにセッションレベルのフラグがセットされ、その後、それがない最後の事はtrueに戻ってそれを設定されています。私のチェック行われていれば、サービスはちょうどフラグの値を返します。
他のヒント
私は、レポートの生成と、これと同じ問題に遭遇しました。簡単な解決策は、夜間にレポートを実行し、サーバーに書き込むことであろう。その後、レポートへのリンクを提供しています。
私は<のhref =「http://www.asp.net/AJAX/Documentation/Live/Tutorials/IntroductionUpdateProgress.aspx」を使用してお勧めします(UpdateProgress
と共に)REL = "nofollowをnoreferrer"> UpdatePanel
を制御
あなたは素敵なアニメーションGIF画像後にしている場合は、チェックアウト Ajaxloadするます。