Rakesh R Surve[RST] Ответов: 1

Как извлечь одно изображение из папки


Я должен получить одно-единственное изображение при нажатии кнопки, но все изображения просматриваются на элементе управления изображениями. Я пытаюсь получить изображение одно за другим на элементе управления изображением после нажатия кнопки

Что я уже пробовал:

protected void Page_Load(object sender, EventArgs e)
{
    string[] filesindirectory = Directory.GetFiles(Server.MapPath("~/Images"));
    List<String> images = new List<string>(filesindirectory.Count());

    foreach (string item in filesindirectory)
    {
        images.Add(String.Format("~/Images/{0}", System.IO.Path.GetFileName(item)));
    }

    RepeaterImages.DataSource = images;
    RepeaterImages.DataBind();
}




<asp:Repeater ID="RepeaterImages" runat="server">
    <ItemTemplate>
        <asp:Image ID="Image" runat="server" ImageUrl='<%# Container.DataItem %>' />
    </ItemTemplate>
</asp:Repeater>

ZurdoDev

Что?

Rakesh R Surve[RST]

Я хочу получать по одному изображению за раз из пертикулярной папки.

ZurdoDev

Повторение себя не делает это более ясным.

1 Ответов

Рейтинг:
0

Karthik_Mahalingam

Для этого не нужно использовать ретранслятор,вы создадите элемент управления изображением с двумя кнопками.

<asp:Image ID="img"  runat="server" />
       <br />
      <asp:Button Text="Previous" ID="btnPrev" runat="server" OnClick="btnPrev_Click" />
      <asp:Button Text="Next" ID="btnNext" runat="server" OnClick="btnNext_Click" />


protected void Page_Load(object sender, EventArgs e)
       {

           if (!Page.IsPostBack)
           {
               var files = Directory.GetFiles(Server.MapPath("~/Images")).ToList();
               ViewState["Index"] = 0;
               string path = String.Format("~/Images/{0}", System.IO.Path.GetFileName( files[0]));
               img.ImageUrl = path;

           }
       }

       protected void  btnNext_Click(object sender, EventArgs e)
       {
           var files = Directory.GetFiles(Server.MapPath("~/Images")).ToList();
           int index = Convert.ToInt32(ViewState["Index"]);
           int count = files.Count;
           index++;
           if (index < count)
           {
               string path = String.Format("~/Images/{0}", System.IO.Path.GetFileName(files[index]));
               img.ImageUrl = path;
           }
           else
               index = count - 1;

           ViewState["Index"] = index;

       }

       protected void btnPrev_Click(object sender, EventArgs e)
       {
           var files = Directory.GetFiles(Server.MapPath("~/Images")).ToList();
           int index = Convert.ToInt32(ViewState["Index"]);
           int count = files.Count;
           index--;
           if (index > 0)
           {
               string path = String.Format("~/Images/{0}", System.IO.Path.GetFileName(files[index]));
               img.ImageUrl = path;
           }
           else
               index = 0;

           ViewState["Index"] = index;
       }


Rakesh R Surve[RST]

Сэр, предыдущая кнопка не работает...

ZurdoDev

Затем отладьте и исправьте его. Очень невежливо ожидать, что другие люди сделают всю работу за вас.

Karthik_Mahalingam

если (индекс > 0)
if (индекс > -1)

ZurdoDev

+5 за понимание того, чего хотел ОП, и предоставление хорошего примера.

Karthik_Mahalingam

Спасибо Ряндев