画像ボタンのあるページがあります。ユーザーが画像ボタンをクリックすると、サーバーはページの PDF を作成し、ダウンロードを伴う応答がクライアントに送り返されます。問題は、これには時間がかかることです。クライアントの待機をどのように処理できますか?
私の最初の考えは、ローダー GIF を表示するボタンで onClientClick イベントを実行することでした。しかし、応答がいつ終了したかを検出できないため、再び非表示にすることができます。RegisterStartupScriptとResponse.Write([script])を使用してみましたが、PDF のResponse.BinaryWrite(buffer)によってすべてオーバーライドされているようです。ファイルはダウンロードされますが、他には何も起こりません。
ダウンロードロジックのみを含む私のコードは次のとおりです。
protected void imgPrint_Click(object sender, ImageClickEventArgs e)
{
PDF pdf = new PDF();
byte[] buffer = pdf.ExportToPDF(Request.QueryString["id"].ToString(), Request.QueryString["mode"].ToString());
string att = "attachment; filename=" + Request.QueryString["mode"].ToString() + ".pdf";
Response.ClearContent();
Response.AddHeader("content-disposition", att);
Response.ContentType = "application/pdf";
Response.ContentEncoding = Encoding.Default;
Response.BinaryWrite(buffer);
}
そして、現在アラートのみを表示する onClientClick イベントを持つイメージ ボタン:
<asp:ImageButton ID="imgPrint" runat="server"
ImageUrl="~/bilder/skriv_ut.png" Width="45" Height="36"
onclick="imgPrint_Click" OnClientClick="loader(true);" />