2017-08-17 107 views
1

我通過從文件夾中獲取圖像來顯示DataList中的一些圖像。現在,我想在我的Datalist中單擊「刪除」按鈕時刪除文件夾中的圖像。使用數據列表從文件夾中刪除圖像

我的問題是,我無法從中獲取文件名:

string fileName = e.CommandArgument.ToString(); 

我嘗試了幾種解決方案,但沒有得到正確的解決方案。

HTML標記:

<asp:DataList OnDeleteCommand="gvImages_DeleteCommand" ID="gvImages" RepeatColumns="5" 
       RepeatDirection="Horizontal" GridLines="Horizontal" runat="server" 
       BorderColor="#336699" BorderStyle="Solid" ShowHeader="true"> 
    <ItemTemplate> 
    <center> 
     <table> 
      <tr> 
       <td style="width: 90px; height: 90px"> 
        <img id="PICID" runat="server" src='<%# Container.DataItem %>' alt='' 
         style="height: 100px; width: 100px;" /><br /> 
        <asp:Button ID="Delete" Height="22px" CommandName="Delete" 
           Width="100px" runat="server" Text="Delete Picture" /><br /> 
       </td> 
      </tr> 
     </table> 
    </center> 
    </ItemTemplate> 
</asp:DataList> 

代碼隱藏:

protected void gvImages_DeleteCommand(object source, DataListCommandEventArgs e) 
{ 
    //you can hold filename on Button's CommandArgument 

    string fileName = e.CommandArgument.ToString(); 

    // here i can not get the file name to delete it from the folder 

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

    FileInfo fInfo; 

    fInfo = new FileInfo(fileName); 

    fInfo.Delete(); 

    gvImages.DataBind(); 
} 
+0

是'使用Server.Mappath(文件名)'返回正確路徑?你也獲得任何權限例外嗎? –

回答

0

你必須在你的DataList控件添加asp:Image控制和嘗試:

HTML標記:FilePath是一個柱子在您的數據源名稱。

<asp:Image ID="PICID" runat="server" 
      ImageUrl='<%# DataBinder.Eval(Container.DataItem, "FilePath") %>' /> 

代碼隱藏:gvImages_DeleteCommand事件,如:

string url = ((Image)gvImages.Items[e.Item.ItemIdex].FindControl("PICID")).ImageUrl; 

string path = Server.MapPath(url); 

if (File.Exists(path)) 
{ 
    File.Delete(path); // deletes file from folder 
} 
相關問題