or
<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(); } } }
