我目前正在尝试创建自定义树,并且在尝试渲染节点子节点时遇到了麻烦。在浏览了各种文章/帖子后,我在这一点上:
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();
但是我收到一条错误消息,说没有 GetServiceUrl 方法需要 0 个参数。我假设上述方法适用于早期版本?