2013-11-20 28 views
0

我開始使用Sitecore,並且很難將存儲在TreeList中的圖像在aspnet轉發器中正確顯示。從站點核心中的一個數據庫中加載多個圖像

在標記中,我有一個轉發器,意思是使用sc:Image項目列出圖像。

   <asp:Repeater ID="rptLogos" runat="server" OnItemDataBound="rptLogos_ItemDataBound" > 
        <ItemTemplate> 
         <a title="Logo" href="#"> 
          <sc:Image runat="server" ID="img" field="image logos" /> 
         </a> 
        </ItemTemplate> 
       </asp:Repeater> 

在後面的代碼,我檢索MultilistField和像這樣

 Sitecore.Data.Fields.MultilistField mlLogos = Footer.Fields["Logos"]; 

     if (mlPartnerLogos != null) 
     { 
      rptLogos.DataSource = mlLogos.TargetIDs; 
      rptLogos.DataBind(); 
     } 

在ItemDataBound事件我然後每個ID轉換爲項目與TargetIDs設置中繼器的數據源,從中繼器抓取圖像控件併爲Sitecore.Web.UI.WebControls.Image項設置Item字段。

 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      ID targetId = e.Item.DataItem as ID; 

      if (!targetId.IsNull) 
      { 
       MediaItem targetItem = Sitecore.Context.Database.GetItem(targetId); 

       if (targetItem != null) 
       { 
        var phImage = e.Item.FindControl("img") as Sitecore.Web.UI.WebControls.Image; 
        phImage.Item = targetItem; 
       } 
      } 
     } 

如果我調試代碼,它似乎檢索數據沒有任何問題。然而,在標記中,我沒有翻譯成一個字段,而只是變得空白。

抓住一個Sitecore項目並將其分配給Sitecore.Web.UI.WebControls.Image項目的相同「想法」在其他地方工作正常,我有一個項目,但我注意到如果我改變了sc :將圖片標籤的字段替換爲sitecore中字段名稱的小寫字母以外的名稱,它將不起作用。如果這是問題,但我對TreeList中的圖像的字段名應該有些困惑。

我也有一種奇怪的感覺,即我檢索項目並嘗試分配它們的方式可能有點太「臃腫」,並且可能有一種更簡單的方式。

任何幫助將不勝感激。謝謝。

編輯:

修正通過更換SC的建議:用一個asp圖像:圖像並改變的ItemDataBound到

 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      ID targetId = e.Item.DataItem as ID; 

      if (!targetId.IsNull) 
      { 
       MediaItem targetItem = Sitecore.Context.Database.GetItem(targetId); 

       if (targetItem != null) 
       { 
        var phImage = e.Item.FindControl("img") as System.Web.UI.WebControls.Image; 
        phImage.ImageUrl = Sitecore.Resources.Media.MediaManager.GetMediaUrl(targetItem); 
       } 
      } 
     } 

回答

1

在sc:圖像控制要被用於顯示的字段項目。我認爲這是一個更好的方法來使用asp:image控件並填充圖片url。如果您使用MediaManager,則可以從圖像項目中獲取圖像URL。

1

Martijn是對的。我想補充說,跳過OnItemDataBound更好。你應該使用數據綁定,更容易。用項目替換mlLogos.TargetIDs,你很好去!

相關問題