C# 如何将TreelistEx中的图像绑定到Sitecore中的中继器
我不确定这是否是正确的方法,但仍在继续。 模板包含以下字段C# 如何将TreelistEx中的图像绑定到Sitecore中的中继器,c#,asp.net,sitecore,sitecore8,C#,Asp.net,Sitecore,Sitecore8,我不确定这是否是正确的方法,但仍在继续。 模板包含以下字段 Description [Rich Text] Images [TreelistEx] 用户将使用TreelistEx字段从媒体库中选择图片,该字段稍后将显示在旋转木马中。用户还应该能够编辑这些图像 我的代码没有显示任何图像 aspx: <div class="toggle_1bs"> <asp:Repeater ID="rpImages" runat="server" OnItemDataBound=
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>
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));
}
}
}
使用treelist控件添加了两个图像,我可以看到这两个图像的html呈现(
)。您没有图像类型字段。这就是为什么不能像那样使用sc:Image
您正在从TreeListEx获取媒体项列表
删除您的rpImages\u ItemDataBound
并尝试以下操作:
<ItemTemplate>
<img src='<%# Sitecore.StringUtil.EnsurePrefix('/', Sitecore.Resources.Media.MediaManager.GetMediaUrl((Sitecore.Data.Items.Item)Container.DataItem)) %>' />
</ItemTemplate>
' />
您没有属于图像类型字段的字段。这就是为什么不能像那样使用sc:Image
您正在从TreeListEx获取媒体项列表
删除您的rpImages\u ItemDataBound
并尝试以下操作:
<ItemTemplate>
<img src='<%# Sitecore.StringUtil.EnsurePrefix('/', Sitecore.Resources.Media.MediaManager.GetMediaUrl((Sitecore.Data.Items.Item)Container.DataItem)) %>' />
</ItemTemplate>
' />
它确实显示了图像,但用户无法编辑它们。为了使图像可编辑,我认为应该将每个图像添加为一个项目&然后使用sc:image
。是这样吗。还有其他方法吗?因为您的中继器有一个项目类型,所以您可以像这样直接调用该项目。是否显示可编辑图像?另外,您可以调试这一行并检查项目。项目上是否有名为Images的字段?正如我在上面所写的,您不能将sc:image
与树列表一起使用。您应该阅读有关编辑框架和自定义按钮的内容。这确实显示了图像,但用户无法编辑它们。为了使图像可编辑,我认为应该将每个图像添加为一个项目&然后使用sc:image
。是这样吗。还有其他方法吗?因为您的中继器有一个项目类型,所以您可以像这样直接调用该项目。是否显示可编辑图像?另外,您可以调试这一行并检查项目。项目上是否有名为Images的字段?正如我在上面所写的,您不能将sc:image
与树列表一起使用。您应该阅读有关编辑框架和自定义按钮的内容。