0

ドキュメント (.PDF) リストを表示するための gridView と、ドキュメントをダウンロード/読み取るための LinkBut​​ton があります。

リンクボタン:

<ItemTemplate>
     <asp:LinkButton ID="lbDocTitle" runat="server" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "ID") %>' Text='<%# DataBinder.Eval(Container.DataItem, "Content") %>' OnClick="lbDocTitle_Click"></asp:LinkButton>
</ItemTemplate>

lbDocTitle_click

protected void lbDocTitle_Click(object sender, EventArgs e)
        {
            LinkButton btn = (sender as LinkButton);

            int docID = Convert.ToInt32(btn.CommandArgument);
            //get fileName from docID here...

            ReadPdfFile(fileName);

        }


private void ReadPdfFile(string fName)
        {

            WebClient client = new WebClient();
            Byte[] buffer = client.DownloadData(fName);

            if (buffer != null)
            {
                Response.ContentType = "application/pdf";
                Response.AddHeader("content-length", buffer.Length.ToString());
                Response.BinaryWrite(buffer);
            }
        }

上記のコードはすべて完璧に機能します。

次に、いくつかの改善を行います。コードがサーバーで実行されている間にロード画面を追加します

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

<asp:UpdatePanel ID="updatePanel" runat="server">
<ContentTemplate>
    <asp:GridView ...> <!-- move gridview here -->
</ContentTemplate>
</UpdatePanel>


<asp:UpdatePanelAnimationExtender ID="upae" BehaviorID="animation" runat="server" TargetControlID="updatePanel">
                <Animations>
                    <OnUpdating>
                        <Parallel duration="0">
                            <ScriptAction Script="onUpdating();" />  
                         </Parallel>
                    </OnUpdating>
                    <OnUpdated>
                        <Parallel duration="0">
                            <ScriptAction Script="onUpdated();" /> 
                        </Parallel> 
                    </OnUpdated>
                </Animations>
            </asp:UpdatePanelAnimationExtender>

JavaScript :

function onUpdating() {
    $('#loadingBox-holder').show();
    $('#loadingBox').show();
}

function onUpdated(x) {
    $('#loadingBox-holder').hide();
    $('#loadingBox').hide();
}  

改善後lblDocTitle、LinkBut​​ton をクリックするとロード画面が表示され、まだロード中です。

そのバグを修正する理由と方法がわかりません。

ありがとう !

4

1 に答える 1

0

OK、そのエラーを修正します。他の ASPX ページを使用してダウンロード ファイルを処理するだけです。UpdatePanel は HTML 以外の出力に応答できません:D

于 2012-11-26T11:15:34.810 に答える