[DevExpress][TreeList]向上递归,获取符合条件的父节点

关键代码:

        /// <summary>

        /// 向上递归,获取符合条件的父节点

        /// </summary>

        /// <param name="node">需要向上递归的节点</param>

        /// <param name="conditionHanlder">判断条件【委托】</param>

        /// <returns>符合条件的节点【TreeListNode】</returns>

        public static TreeListNode GetParentNode(this TreeListNode node, Predicate<TreeListNode> conditionHanlder)

        {

            TreeListNode _parentNode = node.ParentNode;//获取上一级父节点

            TreeListNode _conditonNode = null;

            if (_parentNode != null)

            {

                if (conditionHanlder(_parentNode))//判断上一级父节点是否符合要求

                {

                    _conditonNode = _parentNode;

                }

                if (_conditonNode == null)//若没有找到符合要求的节点,递归继续

                    _conditonNode = GetParentNode(_parentNode, conditionHanlder);

            }

            return _conditonNode;

        }

代码使用:

            TreeListNode _node = e.Node;

            TreeListNode _condionParent = _node.GetParentNode(n => n.GetNodeType() == NodeType.Cab);//获取类型为CAB类型的父节点

            Trace.WriteLine(_condionParent.GetName());

你可能感兴趣的:(DevExpress)