2011-12-26 28 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> 

代碼隱藏:

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%完美 - 謝謝!一個問題 - 我需要將asp中的ImageUrl作爲一個變量。那可能嗎?目前,您已將其硬編碼爲「〜/圖像」。我有一個路徑變量,我的代碼後面使用(所以我替換了ListImages()中的硬編碼URL),但我可以在aspx中使用相同的變量嗎? – Craig

+0

我們已經在代碼中做到了。我編輯了答案。 – King

+0

@Dumb你是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); 
      } 
     } 
    }