Удалить изображение из папки с помощью кнопки удаления списка данных - PullRequest
0 голосов
/ 25 февраля 2012

Я отображаю некоторые изображения в списке данных, получая изображения из папки. Теперь я хочу удалить изображение в папке, когда нажимаю кнопку «Удалить» в моем списке данных.

Вот мой код кнопки удаления:

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 ]

1 голос
/ 25 февраля 2012

Вложенные функции, как вы сделали, - плохая практика программирования:

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

Попробуйте вот так, и когда вы отладите, вы сможете увидеть, какой файл вы пытаетесь удалить:

string fileName = e.CommandArgument;

fileName = Server.MapPath(fileName);

File.Delete(fileName);

Кроме того, вы получаете ошибку? Исключение? Почему в коде нет обработчика исключений?

0 голосов
/ 25 февраля 2012

вы должны использовать commandName на кнопку. И вы должны использовать OnDeleteCommand для DataList.

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