DevExpress 가 TreeList 를 실현 하여 공공 부모 노드 를 위로 재 귀적 으로 가 져 오 는 방법

2808 단어 DevExpressTreeList
가끔 C\#프로젝트 개발 을 진행 할 때 공공 노드 를 가 져 와 야 합 니 다.다음 그림 과 같 습 니 다.

예 를 들 어'Test 103-2'노드 를 클릭 하면 그 유형 은'등'유형 인 데'중심 구역'이라는 유형 은'지역'의 공공 노드 를 어떻게 얻 습 니까?이에 대한 구체 적 인 실현 방법 은 다음 과 같다.
주요 기능 코드 는 다음 과 같 습 니 다.

/// <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;
}
/// <summary>
///       
/// </summary>
/// <param name="node">         </param>
/// <param name="conditionHanlder">  ,  fasle    ;  true    ;</param>
public static void UpwardRecursiveNode(this TreeListNode node, Predicate<TreeListNode> conditionHanlder)
{
  TreeListNode _parentNode = node.ParentNode;
  if (_parentNode != null)
  {
 if (conditionHanlder(_parentNode))
 {
   UpwardRecursiveNode(_parentNode, conditionHanlder);
 }
  }
}
/// <summary>
///     ,               
/// </summary>
/// <param name="node">    </param>
/// <param name="checkHanlder">  </param>
/// <returns>       </returns>
public static TreeListNode 
GetPublicParentNode

(this TreeListNode node, Predicate<TreeListNode> checkHanlder)
{
  TreeListNode _publicPNode = null;
  TreeListNode _findNode = node.GetParentNode(checkHanlder);//              
  if (_findNode != null)
  {
 //      
 UpwardRecursiveNode(_findNode, n =>
 {
   TreeListNode _curpublicNode = n.ParentNode;//            
   if (_curpublicNode != null)
   {
 if (_curpublicNode.Nodes.Count > 1)//       ,       
 {
   _publicPNode = _curpublicNode;
   return false;//    
 }
   }
   return true;//    
 });
  }
  return _publicPNode;
}

본 논문 에서 말 한 예 가 여러분 에 게 비슷 한 C\#프로젝트 개발 에 도움 이 되 기 를 바 랍 니 다!

좋은 웹페이지 즐겨찾기