2016-03-21 48 views
0

我不確定這是否正確,但仍然繼續。 模板具有這些領域如何將圖像從TreelistEx綁定到Sitecore中繼器

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倍的圖像的HTML(<div class="item"></div> )。

回答

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> 
+0

這並顯示圖像,但用戶無法對其進行編輯。爲了使圖像可編輯,我想我應該添加每個圖像作爲一個項目,然後使用'sc:image'。是對的嗎。任何其他方式? – Qwerty

+0

由於您的中繼器有一個項目類型,您可以直接像這樣調用該項目。這是否顯示可編輯的圖像?另外,你可以調試這條線並檢查該項目。該項目上是否存在稱爲圖像的字段? 」/> –

+2

正如我上面所寫,不能使用'sc:image'樹形列表。你應該閱讀關於編輯框架和自定義按鈕。 –

相關問題