单击DataGridView查看权限,在treeview中用CheckBox选中,单击不同用户显示不同权限string[] roleList = dgvPageTwo.CurrentRow.Cells["roleListTo"].Value.ToString().Split(',');            foreach (TreeNode node in tvUserRole.Nodes)
            {
                foreach (TreeNode childNode in node.Nodes)
                {
                    for (int i = 0; i < roleList.Length; i++)
                    {
                        if (roleList[i] == childNode.Tag.ToString())
                        {
                            childNode.Checked = true;
                        }
                        else
                        {
                           // childNode.Checked = false; //此行加上就无显示
                        }
                    }
                   
                }
            } 

解决方案 »

  1.   

    循环嵌套关系弄错了。
    for (int i = 0; i < roleList.Length; i++)
    {
        ……
    }
    应该放在最外面
      

  2.   

    没啊,效果一样,我现在的问题就是checkbox中选中取消的问题,我表达不行,说不清楚了
      

  3.   

    childNode.Checked = false在循环里给我出问题,郁闷了,大虾们救救
      

  4.   

    我大概的看了下明白了你的意思。可是你的逻辑完全是出了问题了我大体给你分析下:string[] roleList = dgvPageTwo.CurrentRow.Cells["roleListTo"].Value.ToString().Split(',');。//获取datagridview当前行所对应的角色集合            foreach (TreeNode node in tvUserRole.Nodes)//你角色应该有两级这是最外一级
                {
                    foreach (TreeNode childNode in node.Nodes)//这一次是循环当前角色下的所有子角色
                    {
                        for (int i = 0; i < roleList.Length; i++)//这里是循环grivew里的的角色集合
                        {
                            if (roleList[i] == childNode.Tag.ToString())//这个地方是说如果gridview中有的角色,就在这个树里面也选中
                            {
                                childNode.Checked = true;
                            }
                            else//否则不选中
                            {
                               // childNode.Checked = false; //这个地方要注意了,这个if和else是每个循环都要进来的。意思是如果前面找到满足条件的了,下次再循环外面大循环时,再进来,找不到满足条件的还是进这个else,所以导致你的复选框还是没有被选中,就算上次循环被选中的也因为走else这里而取消掉了                        }
                        }
                       
                    }
                } 
      

  5.   

    不好意思,我看错了。 感觉没什么问题。
    if (roleList[i] == childNode.Tag.ToString())//只有这里,我怀疑你这个tag属性里是不是没值。这个tag属性是要手动赋值的。