我有一个列表视图,列出了我数据库中的所有图像。我的数据库中的图像表包含ID(主键)和FileExtension(.jpg,.png,.gif)等。在每个listview项目中,我将有一个下载图标,点击后需要将正确的图像下载到用户的浏览器。这看起来很简单,如果他们点击ID为2的图像的下载图标,他们将下载2 [FileExtension],但我不知道如何编码。
这是我的aspx的相关位:
<asp:ImageButton Runat="server" ID="ibtDownloadImage" ImageUrl="img/downloadIcon.png" />
它目前是一个ImageButton控件,但如果需要它可以更改。
这是该页面背后的代码:
protected void Page_Load(object sender, EventArgs e)
{
DataClasses1DataContext PiccyPic = new DataClasses1DataContext();
var images = from i in PiccyPic.Images
select i;
lvwImages.DataSource = images;
lvwImages.DataBind();
}
public string FileName { get; set; }
protected void ibtDownloadImage_OnClick(object sender, ImageClickEventArgs e)
{
ImageButton img = (ImageButton)sender;
String imgURLtoDownload = sender.CommandArgument;
Response.TransmitFile(imgURLtoDownload);
}
你可以看到我没有填写最后一行,因为我不知道在那里放什么来引用ID和FileExtension。
以下是每个listview项目的外观。使用#Eval语句从数据库中检索图像,图像标题,图像描述,上传和下载。
通过执行
检索图像<img src = "img/uploads/<%#Eval ("ID") %><%#Eval ("FileExtension") %>" />
答案 0 :(得分:1)
为什么在Page_Load中调用ibtDownloadImageDefine(sender, e);
?我想你可以删除这一行。
您需要的是使用 OnClick 方法,以便在单击按钮时执行操作。 然后,对于要下载的图像的URL,您可以绑定 CommandArgument :
<asp:ImageButton Runat="server" ID="ibtDownloadImage" OnClick="ibtDownloadImage_OnClick" ImageUrl="img/downloadIcon.png" CommandArgument='<%#Eval ("ID") %> + "|" + <%#Eval ("FileExtension") %>' />
并在代码behing中实现 OnClick 方法,例如:
protected void ibtDownloadImage_OnClick(object sender, EventArgs e)
{
ImageButton img = (ImageButton)sender;
String[] argument = img.CommandArgument.Split(Convert.ToChar("|"));
String ID = argument[0].ToString();
String FileExtension = argument[1].ToString();
String imgURLtoDownload = "img/uploads/" + ID + FileExtension;
Response.TransmitFile(imgURLtoDownload);
}
希望它有所帮助。