/// <summary> /// 특정 노드를 선택 상태로 설정합니다. /// </summary> /// <param name="node"></param> public static void SelectNode(this RadTreeNode node) { if (node == null) { return; } if (IsDebugEnabled) { log.Debug(@"지정한 TreeNode를 선택된 노드로 설정합니다. node=[{0}]", node.AsTextAndValue()); } node.FocusNode(); node.Selected = true; node.Expanded = true; }
/// <summary> /// 최상위 조상이 Stack의 가장 위에 있고, 지정한 node가 가장 아래에 있도록 Stack을 만들어 반환합니다. /// Stack에서 하나씩 꺼내서 Expand 시키거나 Navigation할 때 필요합니다. /// </summary> /// <param name="node"></param> /// <returns></returns> public static Stack <RadTreeNode> GetAncestorNodeAsStack(this RadTreeNode node) { var stack = new Stack <RadTreeNode>(); if (IsDebugEnabled) { log.Debug(@"특정 nodeContainer의 자신과 모든 조상 노드들을 Stack에 담습니다. 최상위 조상이 Stack의 최상위에 위치하도록 합니다. node=[{0}]", node.AsTextAndValue()); } foreach (var ancestorNode in node.GetAncestorNodes()) { stack.Push(ancestorNode); } return(stack); }
/// <summary> /// 특정 TreeNode부터 조상들의 노드들을 차례로 열거합니다. /// </summary> /// <param name="node"></param> /// <returns></returns> public static IEnumerable <RadTreeNode> GetAncestorNodes(this RadTreeNode node) { if (node == null) { yield break; } if (IsDebugEnabled) { log.Debug(@"특정 nodeContainer의 자신과 모든 조상 노드들을 열거합니다... nodeContainer=[{0}]", node.AsTextAndValue()); } var current = node; while (current != null) { yield return(current); current = current.ParentNode; } }