Beispiel #1
0
 public void AddAd(int index, PowerNode pNode)
 {
     if (index >= 0 && index < this.Count)
     {
         _PowerList.Insert(index, pNode);
     }
 }
Beispiel #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;
 }
Beispiel #3
0
 public PowerNode FindNode(PowerNode pNode)
 {
     return _PNodes.FindNode(this.PNodes, pNode, new PowerPath(pNode));
 }
Beispiel #4
0
        public PowerEnum PowerList(List<ShowShop.Model.Member.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 (ShowShop.Model.Member.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;
        }
Beispiel #5
0
 public void Add(PowerNode pNode)
 {
     _PowerList.Add(pNode);
 }
Beispiel #6
0
 public PowerPath(PowerNode pNode)
 {
     _pNode = pNode;
 }
Beispiel #7
0
 public void Remove(PowerNode pNode)
 {
     _PowerList.Remove(pNode);
 }