2015-03-10 1 views
0

Я хочу написать код, чтобы позволить пользователю загрузить PDF-файл, нажав ссылку «Загрузить» в Gridview, когда путь к файлу указан в Gridview.Как загрузить файл PDF, сгенерированный с учетом пути к файлу в Gridview?

Вот мой код:

ASPX

<asp:GridView ID="Gridview1" runat="server" ShowHeaderWhenEmpty="true" 
          EmptyDataText="No Records Found" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateSelectButton="true" Font-Size="Small" Width="95%" onselectedindexchanged="Gridview1_SelectedIndexChanged"> 
    <AlternatingRowStyle BackColor="White" /> 

    <Columns> 
     <asp:BoundField HeaderText="ID" DataField="id" DataFormatString="BSc/{0}" /> 
     <asp:BoundField HeaderText="Company Name" DataField="ComName" /> 
     <asp:BoundField HeaderText="Country Incorperated" DataField="Country" /> 
     <asp:BoundField HeaderText="Date Created" DataField="Date" /> 
     <asp:BoundField HeaderText="Path" DataField="Path" /> 

     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:LinkButton ID="lnkDownload" Text = "Download" CommandArgument = '<%# Eval("Path") %>' runat="server" OnClick = "DownloadFile"></asp:LinkButton> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 

    <EditRowStyle BackColor="#2461BF" /> 
    <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
    <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
    <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
    <RowStyle BackColor="#EFF3FB" /> 
    <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
    <SortedAscendingCellStyle BackColor="#F5F7FB" /> 
    <SortedAscendingHeaderStyle BackColor="#6D95E1" /> 
    <SortedDescendingCellStyle BackColor="#E9EBEF" /> 
    <SortedDescendingHeaderStyle BackColor="#4870BE" /> 
</asp:GridView> 

aspx.cs

protected void DownloadFile(object sender, EventArgs e) 
{ 
    string filePath = (sender as LinkButton).CommandArgument; 
    Response.ContentType = ContentType; 
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath)); 
    Response.WriteFile(filePath); 
    Response.End(); 
} 

Я посмотрел код загрузки с этого сайта: http://www.aspsnippets.com/Articles/Download-Files-from-GridView-using-LinkButton-Click-Event-in-ASPNet-using-C-and-VBNet.aspx

Я также получить файл путь, как я должен, но после этого ничего не происходит. Также нет ошибки.

Пожалуйста, помогите. Заранее спасибо.

ответ

0

Response.WriteFile - старый метод, который использовался в ASP.NET 1.1. Попробуйте этот код для загрузки.

// Clear the content of the response 
Response.ClearContent(); 

// Add the file name and attachment, which will force the open/cance/save dialog to show, to the header 
Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath)); 

// Add the file size into the response header 
Response.AddHeader("Content-Length", filePath.Length.ToString()); 

// Set the ContentType 
Response.ContentType = "application/pdf"; 

// Write the file into the response (TransmitFile is for ASP.NET 2.0 and above. In ASP.NET 1.1 you have to use WriteFile instead) 
Response.TransmitFile(filePath); 

Response.Flush(); 
// End the response 
Response.End(); 

Кроме того, наличие сетки внутри панели обновления может вызвать проблемы при попытке загрузить из элемента управления внутри самой сети, так как загрузка требует полного поста обратно. В этом случае рассмотрите использование PostBackTrigger.

+0

Большое вам спасибо, это сработало после того, как я удалил панель обновления. – ProblemChild

Смежные вопросы