您的位置:首页 > 其它

菜单权限设置,绑定树结构

2013-07-26 17:11 267 查看
//树视图绑定函数
public void BindDataToTreeView(IList<RoleMenus> ilistrolemenus)
{
// 禁用树视图的重绘
this.treeView1.BeginUpdate();
// 清除原有节点
this.treeView1.Nodes.Clear();
// 遍历权限集合以加载数据
foreach (RoleMenus rolemenus in ilistrolemenus)
{
// 定义权限根项
TreeNode rootTreeNode = null;
// 如果是权限根项
if (rolemenus.Fmuname == "0")
{
rootTreeNode = new TreeNode(rolemenus.Menutext);
rootTreeNode.Tag = rolemenus.Menuname;
rootTreeNode.Checked = false;
this.treeView1.Nodes.Add(rootTreeNode);
}
//如果是权限子项
else
{
// 创建权限子项
TreeNode childTreeNode = new TreeNode(rolemenus.Menutext);
childTreeNode.Tag = rolemenus.Menuname;
childTreeNode.Checked = true;
// 将子项添加到对应的父项中
foreach (TreeNode tmpTreeNode in this.treeView1.Nodes)
{
// 如果与现存的节点父级权限相同
if (tmpTreeNode.Tag.ToString() == rolemenus.Fmuname)
{
// 递归添加所有层级子节点
tmpTreeNode.Nodes.Add(LoadAllChildTreeNode(childTreeNode,ilistrolemenus));
}
}
}
}

// 展开所有树节点
this.treeView1.ExpandAll();

// 启用树视图的重绘
this.treeView1.EndUpdate();
}

#region Private Methods
/// <summary>
/// 加载所有树子节点
/// </summary>
/// <param name="currentChildTreeNode">当前子节点</param>
/// <param name="rightsCollection">所有权限集合</param>
/// <returns>加载了所有次级子节点的当前子节点</returns>
private TreeNode LoadAllChildTreeNode(TreeNode currentChildTreeNode, IList<RoleMenus> ilistrolemenus)
{

// 遍历同父权限项集合
foreach (RoleMenus tmpRights in ilistrolemenus)
{
// 如果当前父级权限项的权限名称与当前节点相同
if (tmpRights.Fmuname == currentChildTreeNode.Tag.ToString())
{
// 为当前节点创建新的子节点
TreeNode newChildTreeNode = new TreeNode(tmpRights.Menutext);
newChildTreeNode.Tag = tmpRights.Menuname;
newChildTreeNode.Checked = true;
// 创建同父权限项集合
List<RoleMenus> sameNessParentRightsList = new List<RoleMenus>();
// 获取所有与当前权限项具有相同父权限项的权限项
foreach (RoleMenus sameNessParentRights in ilistrolemenus)
{
if (sameNessParentRights.Fmuname == tmpRights.Fmuname)
sameNessParentRightsList.Add(sameNessParentRights);
}
// 递归添加到当前节点及其所有子节点
currentChildTreeNode.Nodes.Add(LoadAllChildTreeNode(newChildTreeNode, ilistrolemenus));
}
}

// 返回当前处理的节点
return currentChildTreeNode;
}
#endregion
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: