2016-07-28 7 views
0

HELP! LinkBut​​tonまたはGridview_RowDeletingメソッドを使用して、DataBaseおよびFolderから同時にファイルを削除することは可能ですか?以下は、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")%>'として、その後DeleteFileを中CommandArgument()、あなたはそれを呼び出すことを取ってCommandArgument、filePathに... filePathに実際のファイルのパスを渡すべき "ID"としてバインドされたデータを含みます...あなたはそれをCommandArgumentとして提供できますか? –

+0

ファイルのパスを指定するのと同じ方法で、<%#DataBinder.Eval(Container.DataItem、 "ID")%> '... <%#DataBinder.Eval(Container.DataItem、 "FilePath")%> 'それから、あなたはそこにいます –

+0

" filePath "を試しました...このエラーメッセージが出ました:DataBinding: 'System.Data.DataRowView'に 'filePath'という名前のプロパティが含まれていません。 –

答えて

0

ご協力いただきありがとうございます。私は後でこれに答えました。私はそれをすべてと共有したいと思います。グリッドビューのプロパティで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> 
関連する問題