gpt4 book ai didi

c# - 简单的 Sitecore ASP 转发器 - 访问字段

转载 作者:太空宇宙 更新时间:2023-11-03 17:32:18 29 4
gpt4 key购买 nike

我这里有一个非常基本的 sitecore 问题。我想遍历一组子对象(位置),并显示有关每个子对象的一些信息。

我正在使用 ASP 转发器进行迭代,我正在加载页面上的 child ,我正在尝试使用 sc 标签来显示信息 - 但我没有出现在页面上。

谁能帮我看看我在这里遗漏了什么?

代码隐藏:

protected void Page_Load(object sender, EventArgs e)
{
var item = Sitecore.Context.Item;

var children = new List<Sitecore.Data.Items.Item>();
foreach (var child in item.GetChildren())
{
children.Add((Sitecore.Data.Items.Item)child);
}

LocationsRpt.DataSource = children;
LocationsRpt.DataBind();
}

标记:

<asp:Repeater runat="server" ID="LocationsRpt" OnItemDataBound="LocationsRptItemDataBound">
<ItemTemplate>
<div class="InnerContentSec clearfix">
<div id="AboutSolar" class="AboutSolar clearfix">
<div class="items">
<h3>
<sc:Text runat="server" ID="Title"/>
</h3>
<div class="LocationBlock clearfix">
<div class="ImgSec">
<sc:Image id="Image" runat="server" Width="185" Height="107" />
</div>
<div class="DescSec">
<p><sc:Text ID="ShortDescription" runat="server" /></p>
</div>
</div>
</div>
</div>
</div>
</ItemTemplate>
</asp:Repeater>

最后是 DataItemBound

protected void LocationsRptItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var subItem = e.Item.DataItem as Item;

if (subItem != null)
{
var appTitle = e.Item.FindControl("Title") as Sitecore.Web.UI.WebControls.Text;

if (appTitle != null)
{
appTitle.DataSource = subItem.ID.ToString();
appTitle.Field = "Application Title";
appTitle.DataBind();
}

var appImage = e.Item.FindControl("Image") as Sitecore.Web.UI.WebControls.Image;

if (appImage != null)
{
appImage.DataSource = subItem.ID.ToString();
appImage.Field = "Location Image";
appImage.DataBind();
}

var shortDescription = e.Item.FindControl("ShortDescription") as Sitecore.Web.UI.WebControls.Text;

if (shortDescription != null)
{
shortDescription.DataSource = subItem.ID.ToString();
shortDescription.Field = "Short Description";
shortDescription.DataBind();
}
}
}
}

最佳答案

你也可以这样做:

页面加载:

protected void Page_Load(object sender, EventArgs e)
{
LocationsRpt.DataSource = Sitecore.Context.Item.GetChildren();
LocationsRpt.DataBind();
}

标记:

<asp:Repeater runat="server" ID="LocationsRpt">
<ItemTemplate>
<div class="InnerContentSec clearfix">
<div id="AboutSolar" class="AboutSolar clearfix">
<div class="items">
<h3>
<sc:Text runat="server" ID="Title" Item="<%# Container.DataItem %>"/>
</h3>
<div class="LocationBlock clearfix">
<div class="ImgSec">
<sc:Image id="Image" runat="server" Width="185" Height="107" Item="<%# Container.DataItem %>" />
</div>
<div class="DescSec">
<p><sc:Text ID="ShortDescription" runat="server" Item="<%# Container.DataItem %>" /></p>
</div>
</div>
</div>
</div>
</div>
</ItemTemplate>
</asp:Repeater>

在这种情况下,您不需要数据绑定(bind)事件。

关于c# - 简单的 Sitecore ASP 转发器 - 访问字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16566680/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com