(Sitecore) 带子导航的导航
(Sitecore) Navigation with Subnavigation
我正在尝试使用下拉子导航菜单锚点构建主导航。我已经准备好 HTML 和 CSS,但我不知道如何在子布局及其后面的代码中做到这一点。
我做了很多导航,但这些都是使用 asp:repeaters 或 asp:ListViews 的一维菜单。
谁能给我指出正确的方向?
本质上,您需要在导航中显示的层数(或 "dimensions")上嵌套中继器。请参阅下面的示例。
<asp:Repeater runat="server" ID="TopNavRepeater" OnItemDataBound="TopNavRepeater_OnItemDataBound">
<ItemTemplate>
<sc:Link runat="server" ID="sclTopLink" Field="__Display Name" />
<asp:Repeater runat="server" ID="SecondNavRepeater" OnItemDataBound="SecondNavRepeater_OnItemDataBound">
<ItemTemplate>
<sc:Link runat="server" ID="sclSecondLink" Field="__Display Name" />
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
您需要将每个 Item 的子项绑定到 Top Repeater,并将其绑定到第二个 Repeater。使用 Sitecore Link 控件通过在 OnItemDataBound
事件上设置项目和字段来呈现页面链接。
请参阅下面的粗略示例
protected void Page_Load(object sender, EventArgs e)
{
TopNavRepeater.DataSource = YourHomeItem.Children();
TopNavRepeater.DataBind();
}
protected void TopNavRepeater_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var item = e.Item.DataItem as Item;
if (item == null)
return;
var sclTopLink = e.Item.FindControl("sclTopLink") as Link;
var SecondNavRepeater = e.Item.FindControl("SecondNavRepeater") as Repeater;
if (sclTopLink != null)
{
sclTopLink.Item = item;
}
if (SecondNavRepeater != null)
{
SecondNavRepeater.DataSource = item.Children;
SecondNavRepeater.DataBind();
}
}
}
我正在尝试使用下拉子导航菜单锚点构建主导航。我已经准备好 HTML 和 CSS,但我不知道如何在子布局及其后面的代码中做到这一点。
我做了很多导航,但这些都是使用 asp:repeaters 或 asp:ListViews 的一维菜单。
谁能给我指出正确的方向?
本质上,您需要在导航中显示的层数(或 "dimensions")上嵌套中继器。请参阅下面的示例。
<asp:Repeater runat="server" ID="TopNavRepeater" OnItemDataBound="TopNavRepeater_OnItemDataBound">
<ItemTemplate>
<sc:Link runat="server" ID="sclTopLink" Field="__Display Name" />
<asp:Repeater runat="server" ID="SecondNavRepeater" OnItemDataBound="SecondNavRepeater_OnItemDataBound">
<ItemTemplate>
<sc:Link runat="server" ID="sclSecondLink" Field="__Display Name" />
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
您需要将每个 Item 的子项绑定到 Top Repeater,并将其绑定到第二个 Repeater。使用 Sitecore Link 控件通过在 OnItemDataBound
事件上设置项目和字段来呈现页面链接。
请参阅下面的粗略示例
protected void Page_Load(object sender, EventArgs e)
{
TopNavRepeater.DataSource = YourHomeItem.Children();
TopNavRepeater.DataBind();
}
protected void TopNavRepeater_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var item = e.Item.DataItem as Item;
if (item == null)
return;
var sclTopLink = e.Item.FindControl("sclTopLink") as Link;
var SecondNavRepeater = e.Item.FindControl("SecondNavRepeater") as Repeater;
if (sclTopLink != null)
{
sclTopLink.Item = item;
}
if (SecondNavRepeater != null)
{
SecondNavRepeater.DataSource = item.Children;
SecondNavRepeater.DataBind();
}
}
}