c#
  • asp.net
  • datalist
  • 2013-08-19 53 views 1 likes 
    1

    我的ASP的標記如下:如何在asp.net c#中使用datalist?

     <asp:DataList ID="dtlist" runat="server" RepeatColumns="3" CellPadding="5" OnItemDataBound="dtlist_DataBound"> 
         <ItemTemplate> 
          <asp:Image Width="150" ID="Image1" ImageUrl='<%# Container.DataItem %>' runat="server" /> 
          <br /> 
          <asp:HyperLink ID="HyperLink12" Text='<%# Container.DataItem %>' NavigateUrl='<%# Container.DataItem %>' runat="server"/>            
         </ItemTemplate> 
        </asp:DataList> 
    

    我的C#代碼如下:

     protected void dtlist_DataBound(object sender, DataListItemEventArgs e) 
        { 
         string albumName = Context.Request.QueryString["Album"]; 
         try 
         { 
          DirectoryInfo dir = new DirectoryInfo(MapPath(string.Format("Images/{0}", albumName))); 
          FileInfo[] files = dir.GetFiles(); 
    
          foreach (FileInfo info in files) 
          { 
           ((Image)e.Item.FindControl("Image1")).ImageUrl = string.Format("~/Images/{0}/{1}", albumName, info.Name); 
           ((HyperLink)e.Item.FindControl("HyperLink12")).Text = info.Name; 
           ((HyperLink)e.Item.FindControl("HyperLink12")).NavigateUrl = string.Format("~/Images/{0}/{1}", albumName, info.Name);  
          } 
         } 
         catch (Exception ex) 
         { 
    
          throw; 
         } 
        } 
    

    我想顯示從存儲在磁盤驅動器中的特定文件夾(相冊)的圖像。當用戶點擊專輯1時,會顯示專輯1中的所有圖像。例如。如果album1包含10個圖像,則應該在datalist中顯示10個圖像。但從我上面的代碼中,只有最後一個圖像顯示在所有10張圖像中。有沒有辦法修改上面的代碼來顯示10個單獨的圖像?

    回答

    1

    你不應該需要對項目數據綁定在這裏,你可以改變你類似這樣的標記;

    <asp:DataList ID="dtlist" runat="server" RepeatColumns="3" CellPadding="5"> 
        <ItemTemplate> 
         <asp:Image Width="150" ID="Image1" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Image") %>' runat="server" /> 
         <br /> 
         <asp:HyperLink ID="HyperLink12" Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>' NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "Image") %>' runat="server"/>            
        </ItemTemplate> 
    </asp:DataList> 
    

    而在你的頁面加載,你可以選擇匿名類型與你的願望(如標記表述爲<%#DataBinder.Eval的(的Container.DataItem屬性名稱的新名單,「名稱 「)%>:

    string albumName = Context.Request.QueryString["Album"]; 
        try 
        { 
         DirectoryInfo dir = new DirectoryInfo(MapPath(string.Format("Images/{0}", albumName))); 
    
         var dataToBeBound = dir.GetFiles().Select(x => new 
         { 
          Name = x.Name, 
          Image = string.Format("~/Images/{0}/{1}", albumName, x.Name) 
    
         }).ToList(); 
         dtlist.DataSource = dataToBeBound; 
         dtList.DataBind(); 
        } 
        catch (Exception ex) 
        { 
    
         throw; 
        } 
    
    +0

    dir.GetFiles()選擇,在這條線,提示錯誤,說的System.Array不包含定義選擇 – nightfire001

    +2

    請在你的cs文件添加System.Linq的命名空間。 –

    相關問題