2016-07-28 51 views
0

幫助!使用LinkBut​​ton或Gridview_RowDeleting方法同時從數據庫和文件夾中刪除文件是否可行?下面是一個使用一個LinkBut​​ton我的代碼:使用LinkBut​​ton或Gridview_RowDeleting方法同時從數據庫和文件夾中刪除文件

<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和我的表數據源。

+0

你發送'<%#DataBinder.Eval的(的Container.DataItem, 「ID」)%>'爲CommandArgument,然後採取這一CommandArgument中的DeleteFile(),你叫它文件路徑文件路徑...將包含綁定爲「ID」的數據,並將其傳遞給實際文件的路徑...您可以將它作爲CommandArgument提供嗎? –

+0

如果你可以像提供'<%#DataBinder.Eval(Container.DataItem,「ID」)%>'...一樣的方式提供文件路徑...也許像'<%#DataBinder.Eval(Container.DataItem, 「FilePath」)%>'那麼你在那裏 –

+0

我已經嘗試過「filePath」...我得到這個錯誤信息:DataBinding:'System.Data.DataRowView'不包含名爲'filePath'的屬性。 –

回答

0

謝謝大家的貢獻。我後來得到了答案。我希望與所有人分享。只需在您的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> 
相關問題