单击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; //此行加上就无显示
}
}
}
}
{
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; //此行加上就无显示
}
}
}
}
for (int i = 0; i < roleList.Length; i++)
{
……
}
应该放在最外面
{
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这里而取消掉了 }
}
}
}
if (roleList[i] == childNode.Tag.ToString())//只有这里,我怀疑你这个tag属性里是不是没值。这个tag属性是要手动赋值的。