现在想给管理员添加管理权限,分别是右边的“用户管理”和"借阅管理",实现功能:选中两个复选框然后再按确定就能添加管理员的权限,搞了几个小时都没弄出来,求给源码学习。

解决方案 »

  1.   


    是啊 我就是这样实现的 操作数据库就是
    那我说下我以前实现的步骤:
    首先我数据库肯定是有主外建的
    你的管理权限设置里面的数据我是从数据库里面动态加载上去的
    修改权限那么肯定也关联到我的userinfo表也就是用户表包括管理员
      

  2.   

    //先实现节电选中功能,
    private void CheckNode(TreeNodeCollection trv)//trv是权限树的根节点下的所有子节点集合
            {
                List<string> listr = new List<string>();
                foreach (TreeNode node in trv)
                {
                    if (node.Checked == true)
                    {
                        listr.Add(node.Text);
                        if (node.Nodes.Count > 0)
                        {
                            CheckNode(node.Nodes);
                        }
                    }
                }
            }
    可以先将选中的节点放在list里面,每个用户权限对应一个list,或者一个list数组
      

  3.   

    权限做成更新,执行tree的AfterCheck事件, 获取该节点的信息,然后更新数据就行了。
    这里获取的方法。        private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
            {
                            if (treeView1.SelectedNode != null)
                {GetNodeCheckState((TreeNode)e.Node);                  }
               }        private void GetNodeCheckState(TreeNode parentNode)
            {
                if (parentNode.Nodes.Count > 1)
                {
                    foreach (TreeNode node in parentNode.Nodes)
                    {
                        if (parentNode.Checked == true)
                        {
                             获取被选中的子节点。
                                                                          Console.WriteLine(node.Text);
                        }
                               if (node.Nodes.Count > 0)
                            GetNodeCheckState(node);
                    }
                }
                else
                {
                    Console.WriteLine(parentNode.Text);
                }
            }
      

  4.   

    11楼补充,CheckNode(node.Nodes)函数代码如下。
           /// <summary>
            /// 功能:选中节点连带选中其所有子节点
            /// 作者:liubei
            /// 时间:2011.10.31 16:45
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void trv_PowerFunction_AfterCheck(object sender, TreeViewEventArgs e)
            {
                if (check == false)
                    setchild(e.Node);
                    SetParentChecked(e.Node);
                    check = false;
            }
            /// <summary>
            /// 设置子节点
            /// </summary>
            /// <param name="node"></param>
            private void setchild(TreeNode node)
            {
                foreach (TreeNode child in node.Nodes)
                {
                    child.Checked = node.Checked;
                }
                check = true;
            }        /// <summary>    
            /// 根据子节点状态设置父节点的状态
            /// </summary> 
            /// <param name="childNode"></param>
            private void SetParentChecked(TreeNode childNode)
            {
                if (childNode .Parent!=null)
                {                    
                    TreeNode parentNode = childNode.Parent;
                    if (parentNode.Text != "所有界面")
                    {
                        if (childNode.Checked)
                        {
                            parentNode.Checked = true;
                        }
                        else if (!childNode.Checked)
                        {
                            int ichecks = 0;
                            foreach (TreeNode node in parentNode.Nodes)
                            {
                                if (!node.Checked)
                                {
                                    ichecks++;
                                }
                            }
                            if (ichecks == parentNode.Nodes.Count)
                            {
                                parentNode.Checked = false;
                            }
                        }
                    }
                    else
                    {
                        if (!childNode.Checked)
                        {
                            parentNode.Checked = false;
                        }
                        else if (childNode.Checked)
                        {
                            int ichecks = 0;
                            foreach (TreeNode node in parentNode.Nodes)
                            {
                                if (node.Checked)
                                {
                                    ichecks++;
                                }
                            }
                            if (ichecks == parentNode.Nodes.Count)
                            {
                                parentNode.Checked = true;
                            }
                        }                }
                }
            }
            #endregion