如何将TreelistEx中的图像绑定到Sitecore中的转发器

时间:2016-03-21 14:57:44

标签: c# asp.net sitecore sitecore8

我不确定这是否是正确的做法,但仍然继续进行。 模板包含这些字段

Description [Rich Text]
Images      [TreelistEx]

用户将使用TreelistEx字段从媒体库中选择图片,该字段稍后将显示在轮播中。用户还应该能够编辑这些图像。

我的代码没有显示任何图片。

ASPX:

<div class="toggle_1bs">
  <asp:Repeater ID="rpImages" runat="server" OnItemDataBound="rpImages_ItemDataBound"    
  ItemType="Sitecore.Data.Items.Item">
  <HeaderTemplate>
    <div id="1bs" class="owl-carousel">
  </HeaderTemplate>
  <ItemTemplate>
    <div class="item">
     <sc:Image ID="imgMain" Field="Images" runat="server" CssClass="img-full"  
     Item="<%#Container.DataItem %>"/>
    </div>
  </ItemTemplate>
  <FooterTemplate>
     </div>
  </FooterTemplate>
  </asp:Repeater>
</div>

aspx.cs:

private void BindData()
{
  //bind data to the repeater
  MultilistField offerImages = (MultilistField)offerDetails.Fields["Images"];
  rpImages.DataSource = offerImages.GetItems();
  rpImages.DataBind();
}

protected void rpImages_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
  var mainItem = (Item)e.Item.DataItem;

  if (mainItem != null)
  {
   var imgMain = (Image)e.Item.FindControl("imgMain");

   if(imgMain != null)
   {
     if (!string.IsNullOrEmpty(MediaManager.GetMediaUrl(mainItem)))
       imgMain.DataSource = MediaManager.GetMediaUrl(mainItem);

       //Response.Write(MediaManager.GetMediaUrl(mainItem));
    }
   }            
  }

使用树形图控件添加了2个图像,我可以看到为2个图像(<div class="item"></div>)渲染的html。

1 个答案:

答案 0 :(得分:3)

您没有Image类型字段的字段。这就是为什么你不能那样使用sc:Image

您正在从TreeListEx获取媒体项目列表。

删除rpImages_ItemDataBound并尝试使用以下内容:

<ItemTemplate>
    <img src='<%# Sitecore.StringUtil.EnsurePrefix('/', Sitecore.Resources.Media.MediaManager.GetMediaUrl((Sitecore.Data.Items.Item)Container.DataItem)) %>' />
</ItemTemplate>