我正在创建一个网络应用。在我的应用程序中,我在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();
}
但是当我运行代码时,我无法下载该文件。当我调试此方法时,调试断点未被命中。我的代码出了什么问题?
答案 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()
。我希望这会奏效。试试看。