我使用的是VS2010,导航控件是TreeView(节点数据源是XML文件),我将不同用户登录后拥有的权限树节点的XML文件写到数据库表里面去了,要实现在用户登录时从数据库里面读取XML文件,进行权限判断,不同的用户实现登录后,不同的导航节点,这些代码怎么写啊?请教各位高手给点提示,有实例代码,那是最好了,谢谢!!

解决方案 »

  1.   

    数据库中保存角色,相关编号
    ds.ReadXML,判断相关功能是否ds等中,实现加载
      

  2.   

        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);
        }