2013-02-23 103 views
0

当前,rad树视图返回重复的子节点。我可以如何执行,检查孩子节点是否已经存在。如果已经存在,则不要添加并继续循环。谢谢RadTreeView的子节点检查节点是否已经存在

私人无效BuildProjectTree(){

EntityCollection<ProjectEntity> collection = GetProjectData(); 

    treProjects.Nodes.Clear(); 

    ArrayList pgnodes = new ArrayList(); 
    RadTreeNode pnode = null; 
    RadTreeNode snode = null; 
    //MembershipUserCollection membershipCollection = new MembershipUserCollection(); 
    //membershipCollection = Membership.GetAllUsers(); 


    foreach (ProjectEntity p in collection) 
    { 
     pnode = null; 
     foreach (RadTreeNode n in treProjects.GetAllNodes()) 
     { 
      //bool nodeExist = false; 

       if (n.Text.Trim() == p.TeamLeader.Trim().ToUpper()) 
       { 
        pnode = n; 
        break; 

       } 



     } 
     if (pnode != null) 
     { 
      snode = null; 
      foreach (RadTreeNode n in pnode.Nodes) 
      { 


       if (n.Value == p.ProjectSubGroup.ProjectGroup.Name) 
       { 
        snode = n; 
        break; 
       } 
      } 
      if (snode != null) 
      { 
       RadTreeNode projectnode = new RadTreeNode(p.ProjectTitle + " (" + p.ReferenceNumber + ")", 
                  p.ProjectId.ToString(), BuildProjectNavigationUrl(p, false)); 

       snode.Nodes.Add(projectnode); 
      } 

     } 
     else 
     { 

      RadTreeNode projectteamleadernode = new RadTreeNode(p.TeamLeader.Trim().ToUpper()); 

      RadTreeNode projectgroupnode = new RadTreeNode(p.ProjectSubGroup.ProjectGroup.Name, String.Empty); 

      RadTreeNode projectnode = new RadTreeNode(p.ProjectTitle + " (" + p.ReferenceNumber + ")", 
                p.ProjectId.ToString(), BuildProjectNavigationUrl(p, false)); 






      projectgroupnode.Nodes.Add(projectnode); 
      projectteamleadernode.Nodes.Add(projectgroupnode); 


      pgnodes.Add(projectteamleadernode); 

     } 
    } 

    foreach (RadTreeNode pg in pgnodes) 
    { 

     treProjects.Nodes.Add(pg); 
    } 
    //treProjects.ExpandAllNodes(); 
    treProjects.CollapseAllNodes(); 
} 

回答

0

您提供的应该做你要找的内容片断。在循环之前将pnode初始化为null,并在循环终止后测试pnode的值。

如果这没有帮助,请提供您要添加节点的代码。

+0

嗨hknust,我有更新的代码。谢谢。 – Supermode 2013-02-24 02:39:37

+0

唯一突出的是:'treProjects.Nodes.Clear();'这是你的代码示例中的一个工件吗?如果没有,则无法清除该树,然后在其中搜索匹配项。我也假设这棵树是以团队领导者的名字作为大写的。为了安全起见,在这一行添加另一个上限'if(n.Text.Trim()。ToUpper()== p.TeamLeader.Trim()。ToUpper())' – hknust 2013-03-03 22:41:42

相关问题