gpt4 book ai didi

c# - Umbraco 自定义部分中的多级树

转载 作者:行者123 更新时间:2023-11-30 22:26:32 25 4
gpt4 key购买 nike

我目前正在尝试创建自定义树,但在尝试渲染子节点时遇到了麻烦。在浏览了各种文章/帖子后,我在这一点上:

public override void Render(ref XmlTree tree)
{
List<Node> articles = NodeUtil.GetAllNodesOfDocumentType(-1, "Promoter");
Node article = articles.Where(p => p.CreatorID == UmbracoEnsuredPage.CurrentUser.Id).FirstOrDefault();

if(promo != null)
{
var dNode = XmlTreeNode.Create(this);
dNode.NodeID = article.Id.ToString();
dNode.Text = article.Name;
dNode.Icon = "doc.gif";
dNode.Action = "javascript:openArticle(" + article.Id + ")";
dNode.Source = article.Children.Count > 0 ? this.GetTreeServiceUrl("" + article.Id) : "";
tree.Add(dNode);
}
}

上述代码获取属于当前用户的文章(为了测试,目前每个用户只有一篇文章)。然后,我尝试打印出这篇文章的子项,但没有得到所需的输出,而是得到以下结果:

Article Name
- Article Name
- Article Name
- Article Name

每次我展开一个节点时,它似乎只渲染同一个节点,并且一直持续下去。

我见过其他使用树服务的方法,例如:

TreeService treeService = new TreeService(...);
node.Source = treeService.GetServiceUrl();

但我收到一条错误消息,指出没有采用 0 个参数的 GetServiceUrl 方法。我假设上面的方法适用于早期版本?

最佳答案

我花了一些时间来解决这个问题。这是解决方案,希望它能帮助别人。

const string PARENT_ID = "10"; // The ID of the node that has child nodes

public override void Render(ref XmlTree tree)
{
if (this.NodeKey == PARENT_ID) // Rendering the child nodes of the parent folder
{
// Render a child node
XmlTreeNode node = XmlTreeNode.Create(this);
node.NodeID = "11";
node.Text = "child";
node.Icon = "doc.gif";
node.Action = ...
tree.Add(node);
}
else // Default (Rendering the root)
{
// Render the parent folder
XmlTreeNode node = XmlTreeNode.Create(this);
node.NodeID = PARENT_ID;
node.Source = this.GetTreeServiceUrl(node.NodeID);
node.Text = "parent";
node.Icon = "folder.gif";
tree.Add(node);
}
}

关于c# - Umbraco 自定义部分中的多级树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11716932/

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