2017-02-13 6 views
0

Я создаю веб-приложение. В моем приложении у меня есть gridview и кнопка ссылки внутри моего gridview. Моя LinkButton выглядит следующим образом:Использование кнопки ссылки в gridview C#

<asp:LinkButton ID="lnkDownload" Text="Download" CommandArgument='<%# Eval("FileData") %>' runat="server" OnClick="lnkDownload_Click"></asp:LinkButton> 

В моей таблице есть ссылка для каждого файла, как (~\userpic\chart.png)

Когда пользователь нажимает на кнопку ссылки следующий код должен работать

protected void lnkDownload_Click(object sender, EventArgs e) 
{ 
    string filePath = (sender as LinkButton).CommandArgument; 

    if(string.IsNullOrEmpty(filePath)) 
    { 
     ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "", "alert('No File to download.');", true); 
     return; 
    } 
    Response.ContentType = ContentType; 
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath)); 
    Response.WriteFile(filePath); 
    Response.End(); 
} 

Но когда я запускаю код, я не могу загрузить файл. Когда я отлаживаю этот метод, точка останова отладки не ударяется. Что не так с моим кодом?

+0

Проверьте ссылку «Случайное нажатие ссылки на ссылку», нажмите кнопку «Код события» этой ссылки: [ссылка] (http://www.dotnetbull.com/2013/05/how-to-handle-click-event-of -linkbutton.html) – RRM

+0

Вывести код «GridView». –

ответ

1

на кнопке ссылки добавить CommandName атрибут

<asp:LinkButton ID="lnkDownload" Text="Download" CommandArgument='<%# Eval("FileData") %>' runat="server" OnClick="lnkDownload_Click" **CommandName="Download"**></asp:LinkButton> 

и командного событие строки

protected void YourGridview_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     if (e.CommandName == "Download") 
     { 
      /*your code to download here */ 
     } 
    } 
0

Как вы предназначены для отображения этого asp:LinkButton внутри GridView строк, это OnClick события будет не огонь. Вы должны указать атрибут OnRowCommand="GridView_RowCommand" для gridview и написать код для OnClick внутри метода GridView_RowCommand() вместо lnkDownload_Click(). Надеюсь, это сработает. Попробуйте.