gpt4 book ai didi

c# - 如何在 sitecore 中获取子孙

转载 作者:太空宇宙 更新时间:2023-11-03 23:20:09 24 4
gpt4 key购买 nike

我正在尝试进行左导航,我能够获得父项的子项,但不能获得孙项。主文件夹下有 4 个文件夹,每个文件夹有 3 个项目,都使用相同的模板。

> Main /   
Folder 1/
> item1
> item2
> item3
Folder 2/
> item1
> item2
> item3
Folder 3/
> item1
> item2
> item3
Folder 4/
> item1
> item2
> item3

我用中继器启动:

<ul>
<asp:Literal ID="litFolder" runat="server" />
<asp:Repeater ID="leftNav" runat="server" OnItemDataBound="leftNav_ItemDataBound">
<HeaderTemplate>
<li>
</HeaderTemplate>

<ItemTemplate>
<asp:Repeater ID="rptsubleftNav" runat="server" OnItemDataBound="rptsubleftNav_ItemDataBound">

<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<asp:HyperLink ID="HLMainnav" runat="server"></asp:HyperLink>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>

</asp:Repeater>
</ItemTemplate>

<FooterTemplate>
</li>
</FooterTemplate>
</asp:Repeater>
</ul>

前端设置为使它们链接,但目前它只拉入文件夹,这实际上是使它们链接而不是文件夹中的项目。

 public partial class LeftNav : System.Web.UI.UserControl
{

Item currentItem = Sitecore.Context.Item;


protected void Page_Load(object sender, EventArgs e)
{
leftNav.DataSource = Sitecore.Context.Database.GetItem("/sitecore/Main/").Children;
leftNav.DataBind();

}

public void leftNav_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Item currentItem = (Item)e.Item.DataItem;
((Literal)e.Item.FindControl("litFolder")).Text = currentItem.Name;

if (currentItem != null)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var subNav = e.Item.FindControl("rptsubleftNav") as Repeater;

if (subNav != null)
{
subNav.DataSource = currentItem.GetChildren();
subNav.DataBind();
currentItem.ToString();

HyperLink HLMainnav = (HyperLink)e.Item.FindControl("HLMainnav");
HLMainnav.NavigateUrl = LinkManager.GetItemUrl(currentItem);
HLMainnav.Text = currentItem.Name;
}
}
}
}

protected void rptsubleftNav_ItemDataBound(object sender, RepeaterItemEventArgs e)
{

}

如何获得下一级并将它们设置为链接而不是文件夹?

(更新)我有文件夹及其子文件夹,但没有显示名称。我还尝试在前端使用 <%# Eval("title") %>,但它表示 Sitecore Item 没有该字段。所以不确定它如何正确显示项目但没有标题。

最佳答案

您需要在 leftNav 中继器 ItemTemplate 标签内添加另一个中继器。

然后在 leftNav_ItemDataBound 方法中,获取 currentItem 的子项并将它们指定为新中继器的数据源。

这里是类似的问题(Sitecore) Navigation with Subnavigation

就是这样。

关于c# - 如何在 sitecore 中获取子孙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35701082/

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