Пример #1
0
 public void AddAd(int index, PowerNode pNode)
 {
     if (index >= 0 && index < this.Count)
     {
         _PowerList.Insert(index, pNode);
     }
 }
Пример #2
0
        public PowerNode FindNode(Nodes nodes, PowerNode pNode, PowerPath pPath)
        {
            PowerNode reNode = null;

            foreach (PowerNode node in nodes._PowerList)
            {
                if (!string.IsNullOrEmpty(pPath.PathNode3) && node.NodeDepth == 3)
                {
                    if (node.NodeValue != pPath.PathNode3)
                    {
                        continue;
                    }
                }
                else if (!string.IsNullOrEmpty(pPath.PathNode2) && node.NodeDepth == 2)
                {
                    if (node.NodeValue != pPath.PathNode2)
                    {
                        continue;
                    }
                }
                if (node.NodeDepth == pNode.NodeDepth)
                {
                    if (node.NodeText == pNode.NodeText && node.NodeValue == pNode.NodeValue)
                    {
                        reNode = node;
                        break;
                    }
                }
                else if (node.ChildNodes.Count > 0)
                {
                    reNode = FindNode(node.ChildNodes, pNode, pPath);
                    if (reNode != null)
                    {
                        break;
                    }
                }
            }
            return(reNode);
        }
Пример #3
0
        public PowerEnum PowerList(List <SOSOshop.Model.Roles_Permissions> rpList)
        {
            PowerEnum pp = new PowerEnum();
            int       depth = 0;
            PowerNode pn2 = null, pn3 = null;
            PowerNode pn = null;
            bool      bl2 = true, bl3 = true;//true表示有子项

            foreach (SOSOshop.Model.Roles_Permissions rpModel in rpList)
            {
                depth = GetDepth(rpModel.OperateCode);
                pn    = new PowerNode(rpModel.OperateCode.ToString(), rpModel.OperateCode.ToString(), depth);
                switch (depth)
                {
                case 1:
                    if (pn2 != null)
                    {
                        pn.ParNode = pn2;
                        pn2.ChildNodes.Add(pn);    //此对象不必附加子对象,指定当前的pn2为其父对象,并添加进去
                    }
                    else
                    {
                        bl2 = true;
                        if (pn3 != null)
                        {
                            pn.ParNode = pn3;    //直接把该对象附加给pn3,因为此时pn2为空
                            pn3.ChildNodes.Add(pn);
                        }
                    }
                    break;

                case 2:
                    if (bl2 && pn3 != null)
                    {
                        pn.ParNode = pn3;
                        pn2        = pn;//存pn2中,子对象没有附加
                        bl2        = false;
                    }
                    else    //出现新的pn2(pn3的子对象)对象.pn3还存在,但是bl2为false,因为它已附加了子对象,不管是否附加完整
                    {
                        if (pn2 != null)
                        {
                            pn3.ChildNodes.Add(pn2); //old把已经存在的pn2附加到pn3中
                        }
                        pn.ParNode = pn3;            //设置新的pn2对象
                        pn2        = pn;             //new
                    }
                    break;

                case 3:
                    if (bl3)
                    {
                        pn.ParNode = null;
                        pn3        = pn;//存于pn3实例中,子对象没有附加
                        bl3        = false;
                    }
                    else                 //已经为pn3附加子对象,或者为其附加了孙对象
                    {
                        if (pn2 != null) //存在没有附加了pn2对象
                        {
                            pn3.ChildNodes.Add(pn2);
                            pn2 = null;
                            bl2 = true;
                        }
                        pp.PNodes.Add(pn3);    //把pn3附加到节点树中

                        pn.ParNode = null;
                        pn3        = pn;
                    }
                    break;
                }
                pn = null;
            }
            if (pn3 != null && pn2 != null)
            {
                pn3.ChildNodes.Add(pn2);
                pn2 = null;
                bl2 = true;
            }
            if (pn2 != null)
            {
                pp.PNodes.Add(pn2);
                pn2 = null;
                bl2 = false;
            }
            if (pn2 == null && pn3 != null)
            {
                pp.PNodes.Add(pn3);
            }
            return(pp);
        }
Пример #4
0
 public PowerPath(PowerNode pNode)
 {
     _pNode = pNode;
 }
Пример #5
0
 public void Remove(PowerNode pNode)
 {
     _PowerList.Remove(pNode);
 }
Пример #6
0
 public void Add(PowerNode pNode)
 {
     _PowerList.Add(pNode);
 }
Пример #7
0
 public PowerNode FindNode(PowerNode pNode)
 {
     return(_PNodes.FindNode(this.PNodes, pNode, new PowerPath(pNode)));
 }