使用 LinkBut​​ton 或 Gridview_RowDeleting 方法同时从数据库和文件夹中删除文件

Simultaneously deleting a file from a DataBase and a Folder using a LinkButton or Gridview_RowDeleting method

求助!是否可以使用 LinkBut​​ton 或 Gridview_RowDeleting 方法同时从数据库和文件夹中删除文件?下面是我使用 LinkBut​​ton 的代码:

<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID = "lnkDelete" Text = "Delete" OnClientClick="return confirm('Are you sure you want to delete this record?');" CommandArgument = '<%# DataBinder.Eval(Container.DataItem,"ID") %>' runat = "server" OnClick = "DeleteFile" />
</ItemTemplate>
 </asp:TemplateField>

隐藏代码:

protected void grdProducts_RowEditing(object sender, GridViewEditEventArgs e)
    {
        //Get seleted row
        GridViewRow row = grdProducts.Rows[e.NewEditIndex];

        //Get Id of selected product
        int rowId = Convert.ToInt32(row.Cells[1].Text);

        //Redirect user to Manage Products along with the selected rowId
        Response.Redirect("~/Pages/Management/ManageProducts.aspx?id=" + rowId);
    }

    protected void DeleteFile(object sender, EventArgs e)

    {

        string filePath = (sender as LinkButton).CommandArgument;
        File.Delete(filePath);
        Response.Redirect(Request.Url.AbsoluteUri);


    }

PL:我有一个现有的 gridview 和一个数据源用于我的 table。

感谢大家的贡献。后来我得到了这个答案。我愿意与所有人分享。只需在您的 Gridview 属性中启用 OnRowDeleting,然后使用下面的代码。

    protected void grdProducts_RowDeleting(object sender, GridViewDeleteEventArgs e)

    {
        Image oImg = grdProducts.Rows[e.RowIndex].FindControl("ImageFile") as Image;
        if (oImg != null)
        {
            string sUrl = oImg.ImageUrl;

            File.Delete(Server.MapPath(sUrl));

            grdProducts.DataBind();
        }
    }
}

最后:将此 TemplateField 放到您的 aspx 页面上。

   <asp:TemplateField>
    <ItemTemplate>
      <asp:Image ID="ImageFile" runat="server" ImageUrl='<%# Bind("Image", "Images/Products/{0}")%>'  AlternateText="Picture unavailable"  style="width:50px; height:40px"  />                     
    </ItemTemplate>
    </asp:TemplateField>