Хорошо, у меня есть повторитель:
<asp:Repeater ID="myRepeater" OnItemDataBound="myRepeater_ItemDataBound" runat="server">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<sc:sublayout ID="scSublayout" Path="/Components/Spot/BlurbSpot.ascx" runat="server" />
</ItemTemplate>
</asp:Repeater>
Данные связаны так:
myRepeater.DataSource = Sitecore.Context.Item.GetChildren();
myRepeater.DataBind();
Моя база данных элементов получает источник данных и применяет его к sc: sublayout:
protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var scSublayout = e.Item.FindControl("scSublayout") as Sitecore.Web.UI.WebControls.Sublayout;
if (scSublayout != null)
{
scSublayout.DataSource = ((Sitecore.Data.Items.Item)e.Item.DataItem).ID.ToString();
}
}
}
Отображаются два элемента, но оба элемента отображают данные из второго источника данных. Отладка Я вижу, что он находит оба, но по какой-то причине исходные значения для 1-го цикла перезаписываются.
Я хочу, чтобы отображались как элементы, так и первый элемент, который зацикливается, чтобы его переменные не перезаписывались.
@ Марк Урсино
public partial class BlurbSpotSublayout : Logic.BaseSublayout
{
public static string Blurb_Spot_Heading;
public static string Blurb_Spot_SubHeading;
public static string Blurb_Spot_Abstract;
private void Page_Load(object sender, EventArgs e)
{
if (DataSource != null)
{
Blurb_Spot_Heading = BlurbSpot.GetInstance(DataSource.Paths.FullPath.ToString()).Heading;
Blurb_Spot_SubHeading = BlurbSpot.GetInstance(DataSource.Paths.FullPath.ToString()).SubHeading;
Blurb_Spot_Abstract = BlurbSpot.GetInstance(DataSource.Paths.FullPath.ToString()).BlurbAbstract;
}
}
Внешний интерфейс:
<div ID="Div3" runat="server"><%=Blurb_Spot_SubHeading%></div>
<div ID="Div1" runat="server"><%=Blurb_Spot_Heading %></div>
<div ID="Div2" runat="server"><%=Blurb_Spot_Abstract%></div>
Затем я передаю предмет классу, выполнив:
Database webDB = Sitecore.Configuration.Factory.GetDatabase("web");
Sitecore.Data.Items.Item item;
this.item = webDB.Items[item];
GetInstance (). Заголовок делает это:
public string Heading
{
get
{
if (item != null)
{
Sitecore.Data.Fields.Field field = item.Fields["BlurbSpot_Content_Header"];
if (field != null)
{
return field.Value;
}
else
{
return _heading; // returns default pixel width if BlurbSpot_Heading is not define, or is null
}
}
return _heading;
}
set
{
_heading = value;
}
}