2011-12-26 4 views
2

Я так ржавчиво и ищу помощь. Я загрузил несколько файлов изображений в папку на моем веб-сервере (так что загрузил их). Теперь я хочу просто отобразить их, один под друг другом на странице aspx. Итак, я хочу перебирать все файлы изображений в папке и отображать их на странице.Отображение списка изображений на основе папки

Самый простой способ - это таблица, а затем добавить tr/td для каждого файла.

Может ли кто-нибудь посоветовать? Было бы лучше? Событие в моем файле cs, который читает папку, созданную как и заполняет ее?

Это исключительно для тестовой страницы, а не для производства.

+0

Если его не для производства, только список будет делать! и эффективность тоже. – King

ответ

4

ASPX:

<asp:DataList ID="DataList1" runat="server" RepeatColumns="5" CellPadding="5"> 
      <ItemTemplate> 
      <asp:Image Width="100" ID="Image1" ImageUrl='<%# Bind("Name", "~/images/{0}") %>' runat="server" /> 
       <br /> 
       <asp:HyperLink ID="HyperLink1" Text='<%# Bind("Name") %>' NavigateUrl='<%# Bind("Name", "~/images/{0}") %>' runat="server"/> 
      </ItemTemplate> 
       <ItemStyle BorderColor="Silver" BorderStyle="Dotted" BorderWidth="1px" HorizontalAlign="Center" 
        VerticalAlign="Bottom" /> 
</asp:DataList> 

Code-за:

protected void Page_Load(object sender, EventArgs e) 
    { 
     ListImages(); 
    } 

    private void ListImages() 
    { 
     DirectoryInfo dir = new DirectoryInfo(MapPath("~/images")); 
     FileInfo[] file = dir.GetFiles(); 
     ArrayList list = new ArrayList(); 
     foreach (FileInfo file2 in file) 
     { 
      if (file2.Extension == ".jpg" || file2.Extension == ".jpeg" || file2.Extension == ".gif") 
      { 
       list.Add(file2); 
      } 
     } 
     DataList1.DataSource = list; 
     DataList1.DataBind(); 
    } 

Добавить любые расширения вам нужно!

Source

<%@ Page Language="C#"%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<script runat="server"> 
    private string url; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     url = PictureManager.MembersImagesPath + tuMember.PhotoBig; 
     Page.DataBind(); 
    } 
</script> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
    <asp:Image ID="Image1" runat="server" Height="210px" Width="252px" ImageUrl="<%#url%>" /> 
    </div> 
    </form> 
</body> 
</html> 

Надеется, что это помогает!

+0

Это на 100% отлично - спасибо! Один вопрос - мне нужно, чтобы ImageUrl в asp был переменной. Это возможно? На данный момент у вас жестко закодировано «~/images». У меня есть переменная пути, используемая моим кодом (поэтому я заменил жесткий URL в ListImages()), но могу ли я использовать одну и ту же переменную в aspx? – Craig

+0

мы делаем это в коде. Я отредактировал ответ. – King

+0

@ Удивительно, что вы SuperSmart;) –

2

Для прямого HTML подхода, вы можете использовать:

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!this.IsPostBack) 
     { 
      const string SUBDIR = "images"; 

      foreach (string fileName in System.IO.Directory.GetFiles(Server.MapPath(SUBDIR))) 
      { 
       var oRow = new HtmlTableRow(); 
       var oCell = new HtmlTableCell(); 

       var oHREF = new HtmlAnchor(); 
       string actualFileName = System.IO.Path.GetFileName(fileName); 
       oHREF.HRef = Request.ApplicationPath + "//" + SUBDIR + "//" + actualFileName; 
       oHREF.InnerText = actualFileName; 

       oCell.Controls.Add(oHREF); 

       oRow.Cells.Add(oCell); 

       tblImages.Rows.Add(oRow); 
      } 
     } 
    } 
Смежные вопросы