I'm having trouble writing a pdf file to the browser when a user clicks a linkbutton inside a radgrid detailview gridtableview gridtemplatecolumn. The grid is also wrapped in an update panel. The click event fires and the bytes are written to the response without error. However the browser's file download dialog never appears.
Any insights would be greatly appreciated.
Any insights would be greatly appreciated.
<asp:UpdatePanel ID="updatePanel" ClientIDMode="Static" runat="server"> <ContentTemplate> <telerik:RadGrid ID="rgDocuments" runat="server" Width="100%" ShowStatusBar="False" AutoGenerateColumns="False" AllowSorting="False" AllowMultiRowSelection="False" AllowPaging="False" Skin="EACS" EnableEmbeddedSkins="false" OnDetailTableDataBind="rgDocuments_DetailTableDataBind" OnNeedDataSource="rgDocuments_NeedDataSource" OnPreRender="rgDocuments_PreRender"> <MasterTableView Width="100%" DataKeyNames="DOCUMENT_AUTHOR_ID" AllowMultiColumnSorting="True"> <DetailTables> <telerik:GridTableView DataKeyNames="DOCUMENT_AUTHOR_ID,DOCUMENT_AUTHOR_CATEGORY_ID" Name="Categories" Width="100%" > <DetailTables> <telerik:GridTableView DataKeyNames="DOCUMENT_ID,PARENT_DOCUMENT_ID" Name="ParentDocuments" Width="100%"> <DetailTables> <telerik:GridTableView DataKeyNames="DOCUMENT_ID,FILENAME,TITLE" Name="Documents" Width="100%"> <Columns> <telerik:GridBoundColumn DataField="DOCUMENT_ID" Visible="false"> </telerik:GridBoundColumn> <telerik:GridBoundColumn DataField="FILENAME" Visible="false"> </telerik:GridBoundColumn> <telerik:GridTemplateColumn HeaderText="Section Title"> <ItemTemplate> <asp:LinkButton ID="btnDocument" runat="server" OnClick="btnDocument_Click" Text='<%# Eval("Title") %>'></asp:LinkButton> </ItemTemplate> </telerik:GridTemplateColumn> </Columns> </telerik:GridTableView> </DetailTables> <Columns> <telerik:GridBoundColumn DataField="DOCUMENT_ID" Visible="false"> </telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="Document Title" DataField="TITLE" > </telerik:GridBoundColumn> </Columns> </telerik:GridTableView> </DetailTables> <Columns> <telerik:GridBoundColumn DataField="DOCUMENT_AUTHOR_CATEGORY_ID" Display="false"> </telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="Category" DataField="DISPLAY_VALUE"> </telerik:GridBoundColumn> </Columns> </telerik:GridTableView> </DetailTables> <Columns> <telerik:GridBoundColumn DataField="DOCUMENT_AUTHOR_ID" Visible="false"></telerik:GridBoundColumn> <telerik:GridBoundColumn HeaderText="Author Name" DataField="DISPLAY_VALUE"></telerik:GridBoundColumn> </Columns> </MasterTableView> </telerik:RadGrid> </ContentTemplate> </asp:UpdatePanel>protected void btnDocument_Click(object sender, EventArgs e) { LinkButton lb = (LinkButton)sender; GridDataItem item = (GridDataItem)lb.NamingContainer; if (item != null) { string documentUploadPath = ConfigurationManager.AppSettings["DocumentUploadPath"].ToString(); string filename = documentUploadPath + item.GetDataKeyValue("FILENAME").ToString(); string title = documentUploadPath + item.GetDataKeyValue("TITLE").ToString(); if (File.Exists(Server.MapPath(filename))) { System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; byte[] bytes = File.ReadAllBytes(Server.MapPath(filename)); response.Clear(); response.AddHeader("Content-Type", "binary/octet-stream"); response.AddHeader("Content-Disposition", "attachment; filename=" + title + ".pdf;"); response.Flush(); response.BinaryWrite(bytes); response.Flush(); response.End(); } } }