递归来设置:
private void SetCheck(TreeView TV_Id, TreeNodeCollection Nds)
    {
        foreach (TreeNode node in Nds)
        {
            for (int i = 0; i < dtRoleMenu.Rows.Count; i++)
            {
                if (node.Value.ToString().Trim() == 你的要对比的值)
                {
                    node.Checked = true;
                    break;
                }
                else
                {
                    node.Checked = false;
                }
            }
            SetCheck(TV_Id, node.ChildNodes);
        }
    }

解决方案 »

  1.   

    你的思路是对的,我也这样想,但是要在我现有的结构里改动,我怎么改呢?
    我取出的数据是IList
    ___IList <PurvItemModel> PurvItemList = _purvItemBiz.GetPurvItemByParent(ParentID); 
    for (int i = 0; i < PurvItemList.Count; i++) 这个树已经是用递归绑定显示了!现在在在这个递归里在做这样的递归,有点可怕!
    帮我想想,怎么改一下结构,效率更好,当然能够解决问题最好!
    谢谢你!
      

  2.   

    说得更清楚一点好了 我有3个表(省略部分字段) 1、角色表 
    这个表字段有:RoleID(角色编号) 
    2、权限表 
    这个表字段有:PurvID(权限编号)  Name(权限名称)  ParentID (权限父结点编号) 
    ★★【其实树就是从这个表取数据绑定的】,这个树上选择结点操作的历史记录放下面的角色权限表。 
    3、角色权限表 (记录角色对应的所有权限记录,该表一个角色对应多条权限项信息)
    这个表字段有:RoleID(角色编号)  PurvID(权限编号) 
    ★★这个表记录用户操作树选择结点的全部权限记录