【问题标题】:UpdatePanel quits responding after Response.TransmitFileUpdatePanel 在 Response.TransmitFile 后退出响应
【发布时间】:2011-04-09 12:39:26
【问题描述】:

我在显示文件列表的 UpdatePanel 中有一个 GridView。 GridView 中的一列是用于打开列出的 PDF 文件的按钮。

<asp:UpdatePanel runat="server" ID="upPurchaseOrder">
    <ContentTemplate>
        <asp:GridView ID="gvPurachaseOrder" runat="server" AutoGenerateColumns="False" DataSourceID="odsPurchaseOrders"
            EnableModelValidation="True" DataKeyNames="PurchaseOrderID,PromotionID"  onrowcreated="gvPurachaseOrder_RowCreated">
            <Columns>
                <%--BoundFields omitted--%>
                <asp:TemplateField ShowHeader="False">
                    <ItemTemplate>
                        <asp:Button ID="btnPurchaseOrderOpen" runat="server" Text="Open" CommandName="Open" 
                            CommandArgument='<%# Eval("FilePath") %>' oncommand="btnPurchaseOrderOpen_Command" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </ContentTemplate>
</asp:UpdatePanel>

在 RowCreated 事件中,我将 btnPurchaseOrderOpen 注册为 PostBack 控件,因此它会导致完整的回发。

在按钮事件处理程序中,我使用 Response.TransmitFile 方法打开文件。

Response.Clear();
Response.ContentType = GetConentTypeForFile(fi.Extension);
Response.AddHeader("content-disposition", String.Format("attachment;filename={0}", fi.Name));
Response.TransmitFile(fi.FullName);
Response.End();

我的问题是文件打开后(正确打开)UpdatePanel 停止更新。我可以单击其他按钮,它们永远不会同步或异步回发。我感觉问题与响应有关,但我不知道如何解决。

【问题讨论】:

    标签: asp.net updatepanel


    【解决方案1】:

    你正在做一个完整的回帖,但你没有向服务器返回任何新页面,因为你只是在做传输文件,然后是 response.end。这基本上是您页面的死胡同。您可能想要解决此问题的方法是在 iframe 中进行完整的发布,或者只是创建一个指向下载文件的直接链接,即使这可能是一个 ashx 处理程序,您可以在其中继续拥有与您类似的逻辑已经在用了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多