treeview节点权限分配问题
怎样实现对不同角色的用户登录,显示不同的treeview节点导航? --------------------编程问答-------------------- 做项目时,也遇到这个问题。同问,帮顶 --------------------编程问答-------------------- 通过角色获取相关权限创建treenode添加到treeview.判断用户是否有权限,设置checkbox为true
--------------------编程问答--------------------
学习~~~ --------------------编程问答-------------------- 其实方法是有的,就是用一个事件根据用户类型来判断一下,然后动态生成不同的树:(不同用户类型生成不同的树),但感觉效率不高 --------------------编程问答--------------------
有点抽象,不是很懂;可以详细一点吗? --------------------编程问答-------------------- 加载treenode时,检查到checkbox为true的就让它用
--------------------编程问答-------------------- 一般都是数据库中存储了每个角色可以访问的权限,即:可访问的treenode结点
从数据库中取到可访问的treenode结点
后台添加到treeview上就行了
--------------------编程问答-------------------- 一种办法,让所有的都显示出来,然后根据 相应的权限隐藏一部分,第二种,就是,先判断权限,再加载 --------------------编程问答-------------------- protected void Page_Load(object sender, EventArgs e)
{
if (Session["user"] != null)
{
//得到用户信息
UserInfo user = (UserInfo)Session["user"];
DisplayUserMenu(user);
}
}
protected void DisplayUserMenu(UserInfo user)
{
TVSysFun.Nodes.Clear();
IList<SysFun> parentSysFun = SysFunManager.GetAllParentNodeInfoByUserId(user);
foreach (SysFun sfParent in parentSysFun)
{
string nodeId = sfParent.NodeId.ToString();//第一层节点id
string displayName = sfParent.DisplayName;//第一层节点显示名称
TreeNode fatherNode = this.CreatTreeNode(displayName, nodeId, "", "Images/tree/folder_closed.gif");//根据节点信息,创建第一层节点
CreateChildTree(nodeId, user, fatherNode);//创建子节点
TVSysFun.Nodes.Add(fatherNode);//将第一层节点加入到用户权限TreeView中
}
}
//创建第二层节点
private void CreateChildTree(string nodeId, UserInfo user, TreeNode fatherNode)
{
IList<SysFun> childSysFun = SysFunManager.GetSysFunByParentNodeIdAndUserId(user, int.Parse(nodeId));//获得父节点为nodeId的所有子节点
foreach (SysFun sfChild in childSysFun)
{
string childNodeId = sfChild.NodeId.ToString();//第二层节点id
string childDisplayName = sfChild.DisplayName;//第二层节点名称
string nodeURL = ResolveUrl(sfChild.NodeURL.Trim());//将路径转换为在客户端可用的URL
TreeNode childNode = this.CreatTreeNode(childDisplayName, childNodeId, nodeURL, "Images/tree/folder_open.gif");//根据节点信息,创建第二层节点
AddTree(fatherNode, childNode);//将子节点加入到父节点中
}
}
/// <summary>
/// 创建一个树节点,返回一个树节点对象,参数内容是:
/// 节点名称,节点ID,链接地址,正常图标,展开后的图标
/// </summary>
private TreeNode CreatTreeNode(string strText, string strId, string strUrl, string strImg)
{
TreeNode newNode = new TreeNode();
newNode.Text = strText;
newNode.Value = strId;
newNode.NavigateUrl = strUrl;
newNode.ImageUrl = strImg;
return newNode;
}
/// <summary>
/// 把子节点添加到父节点当中
/// </summary>
private void AddTree(TreeNode FatherNode, TreeNode ChildNode)
{
FatherNode.ChildNodes.Add(ChildNode);
}
补充:.NET技术 , ASP.NET