我通过从文件夹中获取图像来在数据列表中显示一些图像。 现在,当我单击我的datalist上的“删除”按钮时,我想删除文件夹中的图像。
这是我的删除按钮代码:
protected void delete_onClick(object sender, EventArgs e)
{
string fileName = sender as string;
File.Delete(Server.MapPath(fileName));
FileInfo fInfo;
fInfo = new FileInfo(fileName);
fInfo.Delete();
gvImages.DataBind();
}
我不知道如何获取我想要删除的确切图像名称,每个图像都有一个删除按钮。
这是我的数据主义者:
<div>
<asp:DataList 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" OnClick="delete_onClick" Width="100px" runat="server"
Text="Delete Picture" /><br />
</td>
</tr>
</table>
</center>
</ItemTemplate>
</asp:DataList>
</div>
答案 0 :(得分:1)
完成嵌套功能是一种糟糕的编程习惯:
File.Delete(Server.MapPath(fileName));
尝试是这样的,然后在调试时,您将能够看到您正在尝试删除的文件:
string fileName = e.CommandArgument;
fileName = Server.MapPath(fileName);
File.Delete(fileName);
另外,你收到错误了吗?例外?为什么代码周围没有异常处理程序?
答案 1 :(得分:0)
你应该在按钮上使用commandName。你应该在DataList上使用OnDeleteCommand。
<div>
<asp:DataList OnDeleteCommand="Delete_Command" 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>
</div>
然后,
例如Hold FileName:
<asp:Button CommandArgument ='<%# Container.DataItem %>' />
然后,
public void Delete_Command(Object sender, DataListCommandEventArgs e)
{
//you can hold filename on Button's CommandArgument
string fileName = e.CommandArgument;
File.Delete(Server.MapPath(fileName));
FileInfo fInfo;
fInfo = new FileInfo(fileName);
fInfo.Delete();
gvImages.DataBind();
}