c# - 从 ASP.NET 中的 gridview 下载文件时如何保存文件路径
问题描述
我有一个显示图像名称、图像和图像链接以从 SQL 服务器数据库下载的 gridview (webservice)。在单独的数据库表中下载图像(单击链接按钮后)后,我想将图像路径保存在数据库中。
此图像下载网络表单连接到我的另一个具有 ImgPath (nvarchar255) 字段的网络表单图像上传。
概述:到目前为止我所拥有的:
- 图像和图像链接的网格视图
- 从数据库中检索Gridview
- 可以下载图片
我需要的:
- 下载图像时--> 将图像路径保存到 SQL Server 数据库
aspx:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowCommand="GridView1_RowCommand">
<Columns>
<asp:BoundField HeaderText="ID" DataField="AdvID" />
<asp:BoundField HeaderText="Name" DataField="Name" />
<asp:BoundField HeaderText="Item" DataField="Item" />
<asp:ImageField HeaderText="Image" DataImageUrlField="ImgPath" ControlStyle-Height="120" ControlStyle-Width="140">
<ControlStyle Height="120px" Width="140px"></ControlStyle>
</asp:ImageField>
<asp:TemplateField HeaderText="View Information">
<ItemTemplate>
<asp:LinkButton ID="lnkView" runat="server" CommandArgument='<%#Eval("AdvID") %>' OnClick="lnk_OnClick">View</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="DownloadLink">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandArgument='<%# Eval("Item") %>' Text='<%# Eval("Item") %>' CommandName="Download"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
aspx.cs:
public partial class AdvGridView : System.Web.UI.Page
{
SqlConnection sqlCon = new SqlConnection(ConfigurationManager.ConnectionStrings["connect"].ToString());
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.BindGrid();
}
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Download")
{
Response.Clear();
Response.ContentType = "application/octect-stream";
Response.AppendHeader("content-disposition", "filename=" + e.CommandArgument);
Response.TransmitFile(Server.MapPath("~/Images/") + e.CommandArgument);
Response.End();
}
}
void FillGridView()
{
if (sqlCon.State == ConnectionState.Closed)
sqlCon.Open();
SqlDataAdapter sqlDa = new SqlDataAdapter("ViewAll", sqlCon);
sqlDa.SelectCommand.CommandType = CommandType.StoredProcedure;
DataTable dtbl = new DataTable();
sqlDa.Fill(dtbl);
sqlCon.Close();
GridView1.DataSource = dtbl;
GridView1.DataBind();
}
protected void lnk_OnClick(object sender, EventArgs e)
{
int AdvertisementID = Convert.ToInt32((sender as LinkButton).CommandArgument);
if (sqlCon.State == ConnectionState.Closed)
sqlCon.Open();
SqlDataAdapter sqlDa = new SqlDataAdapter("ViewByID", sqlCon);
sqlDa.SelectCommand.CommandType = CommandType.StoredProcedure;
sqlDa.SelectCommand.Parameters.AddWithValue("@AdvID", AdvertisementID);
DataTable dtbl = new DataTable();
sqlDa.Fill(dtbl);
sqlCon.Close();
}
private void BindGrid()
{
GridViewService.WebService service = new GridViewService.WebService();
GridView1.DataSource = service.Get();
GridView1.DataBind();
}
}
解决方案
推荐阅读
- html - 单击按钮更改表单
- c++ - 如何减少功能模板专业化?
- python - 如何使用 Python 的 pymcmcstat 库计算贝叶斯模型选择
- angular - 无法将从 api 返回的数据值分配给 Angular 8 中的类变量
- java - 如何从android中的通知中停止前台服务?
- python - 使用多处理从两个不同的目录并行运行两个 python 代码
- javascript - Typescript 中 Map 的类型保护
- php - PHPWord HTML to Word 设计问题
- android - Flutter:“无法解析配置':classpath'的所有工件”
- excel - 文本框的值被重置