Получение родительского узла выбранного узла в Radtreeview?
-
14-10-2019 - |
Вопрос
У меня есть Radtreeview и много узлов в этом обзоре. Что я хочу сделать, так это то, что когда щелкнул узел, я хочу получить верхний родительский узел. Как я могу это сделать? Структура такая же:
- Родительский
- Ребенок
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.
}