2

次のコードはうまく機能します:

<script type="text/javascript">
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_initializeRequest(InitializeRequest);
    prm.add_endRequest(EndRequest);

    function InitializeRequest(sender, args) {
        document.body.style.cursor = 'progress';
    }
    function EndRequest(sender, args) {
        document.body.style.cursor = 'default';
    }
</script>

ただし、応答が添付ファイルを返す場合(たとえば、ReportViewerコントロールからのPDF):

Response.AddHeader("Content-Disposition", "attachment; filename=some.pdf")

EndRequest()は起動せず、「progress」カーソルはリセットされません。Javascript呼び出し、例えば

ScriptManager.RegisterStartupScript(this, this.GetType(), "close", 
   "parent.EndRequest(...);", true);

トリックを実行しますが、コンテンツの配置のために不可能です。これを正しく行う方法を考えられますか?PDFのレンダリング中に待機カーソルを表示し、PDFが表示されたら通常のカーソルに戻りますか?ここではC#コンテキストを想定していますが、問題は言語またはプラットフォーム固有ではありません。

4

1 に答える 1

2

問題は、EndRequest関数が実行されていないことのようです。pageLoadingイベントとpageLoadedイベントが発生しているかどうかを確認しようとしましたか?

ページに何も返送されないため、これらのイベントは発生していないように感じます(添付ファイルはインラインドキュメントと同じようにページに到達しません)。

ダウンロードしたファイルをiframeに移動します。これを行う方法の例を次に示します。

function InitializeRequest(sender, args) {
    document.body.style.cursor = 'progress';

    var iframe = document.createElement("iframe");
    iframe.src = 'your pdf file';
    iframe.style.display = "none";
    document.body.appendChild(iframe); 
}

次に、iframeのonloadイベントにアクセスできます。

編集:

さらに検索すると、このページに移動しました。それはあなたがやろうとしていることをすべてやっているようです。

于 2010-01-06T02:05:40.977 に答える