使用数据列表删除按钮从文件夹中删除图像

时间:2012-02-25 12:40:35

标签: asp.net button datalist

我通过从文件夹中获取图像来在数据列表中显示一些图像。 现在,当我单击我的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>

2 个答案:

答案 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();
  }