在gridview中使用链接按钮c#

时间:2017-02-13 07:53:00

标签: c# asp.net gridview

我正在创建一个网络应用。在我的应用程序中,我在gridview中有一个gridview和一个链接按钮。我的链接按钮如下所示:

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

但是当我运行代码时,我无法下载该文件。当我调试此方法时,调试断点未被命中。我的代码出了什么问题?

2 个答案:

答案 0 :(得分: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 */
        }
    }

答案 1 :(得分:0)

由于您打算在gridview行中显示此asp:LinkButton,因此不会触发此OnClick事件。你必须提供OnRowCommand="GridView_RowCommand" gridview的属性,并在OnClick方法中编写GridView_RowCommand ()的代码,而不是lnkDownload_Click()。我希望这会奏效。试试看。