2017-08-17 2 views
1

Ich zeige einige Bilder in einer DataList an, indem ich die Bilder aus dem Ordner abrufe. Jetzt möchte ich das Bild im Ordner löschen, wenn ich in meinem Datalist auf die Schaltfläche Löschen klicke.Bild aus Ordner mit Datenliste löschen

Mein Problem ist, dass ich die Dateinamen nicht in der Lage bin zu bekommen aus: mehrere Lösungen, aber habe nicht die richtige Lösung

string fileName = e.CommandArgument.ToString(); 

ich versuchte.

HTML-Markup:

<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> 

-Code-behind:

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

Ist 'Server.MapPath (Dateiname)' Rückkehr den richtigen Weg? Erhalten Sie auch irgendwelche Erlaubnisausnahmen? –

Antwort

0

Sie haben asp:Image Kontrolle in Ihrer Datalist hinzuzufügen, und versuchen Sie es:

HTML-Markup:FilePath ist eine Kolumne n Name in Ihrer DataSource.

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

-Code-behind: In gvImages_DeleteCommand Ereignis wie:

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 
}