Получение родительского узла выбранного узла в Radtreeview?

StackOverflow https://stackoverflow.com/questions/4562697

  •  14-10-2019
  •  | 
  •  

Вопрос

У меня есть Radtreeview и много узлов в этом обзоре. Что я хочу сделать, так это то, что когда щелкнул узел, я хочу получить верхний родительский узел. Как я могу это сделать? Структура такая же:

  1. Родительский
    1. Ребенок
      3. Ребенок Килда
      4. Выбранный узел
      3. Ребенок Килда
      3. Ребенок Килда

Когда я выбираю «4. Выбранный узел», я хочу иметь возможность получить верхний родительский узел, а не вызывая метод три раза.

Это было полезно?

Решение

private void radTreeView_SelectionChanged( object sender, Telerik.Windows.Controls.SelectionChangedEventArgs e )
{
   // Get a reference to the treeview
   Telerik.Windows.Controls.RadTreeView treeView = sender as Telerik.Windows.Controls.RadTreeView;
   // Get the currently selected items
   ObservableCollection<Object> selectedItems = treeView.SelectedItems;
   RadTreeViewItem item = selectedItems[ 0 ] as RadTreeViewItem;
   // Get the previous item and the previous sibling item
   RadTreeViewItem previousItem = item.PreviousItem;
   RadTreeViewItem previousSiblingItem = item.PreviousSiblingItem;

   // Get the next item and the next sibling item
   RadTreeViewItem nextItem = item.NextItem;
   RadTreeViewItem nextSiblingItem = item.NextSiblingItem;

   // Get the parent item and the root item
   RadTreeViewItem parentItem = item.ParentItem;
   RadTreeViewItem rootItem = item.RootItem;
}

В основном последняя строка всего этого события было бы тем, что вам нужно, я считаю, больше информации об этом можно найти здесь. Анкет Однако это для WPF -версии RadtreeView.

Другие советы

Я только что написал этот метод для вас, так как теперь я работаю над огромным проектом с RAD Controls:

public void FindFather(RadTreeNode n)
        {

            foreach (RadTreeNode node in RadTreeView1.GetAllNodes())
            {
                if (node.Level == 0 && !node.GetAllNodes().Contains(node))
                {
                    //this is the node that your looking for 
                    //do something with it
                    Console.Write("this is the Top Parent");
                }
            }


         }

Надеюсь, тебе понравится, братан, никогда не сдавайся при кодировании

@King a.majid: Я не думаю, что ваша логика верна. Как насчет параметра "RadtreeNode n"?

Мой метод просто прост в следующем:

public RadTreeNode CwGetTreeNodeTopParent(RadTreeNode nodeToFindTopParent)
            {
            var parentNode = nodeToFindTopParent.ParentNode;
            if (parentNode.Level == 0)
                return parentNode;
            parentNode = CwGetTreeNodeTopParent(parentNode);
            return parentNode;
            }

Вы должны проверить узел (который должен найти верхнего родителя), чтобы убедиться, что он не самый высокий уровень.

Например, мы хотим найти лучшего родителя для SelectedNode:

if(selectedNode.Level != 0)
{
var topParent = CwGetTreeNodeTopParent(selectedNode);
//To do something here.
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top