Obtenir le nœud parent du nœud sélectionné dans RadTreeView?
-
14-10-2019 - |
Question
J'ai un RadTreeView et beaucoup de noeuds dans cette arborescence. ce que je veux faire est, quand un nœud cliqué je veux obtenir le nœud parent haut. Comment puis-je faire ceci? la structure est comme ceci:
- Parent
- Enfant
Le
des enfants de 3.Child noeud 4.selected
Le
des enfants de 3.Child enfant de 3.Child
- Enfant
lorsque je sélectionne le « noeud 4.selected » je veux être en mesure d'obtenir le nœud parent haut pas en appelant trois fois la méthode.
La solution
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;
}
Principalement la dernière ligne de cet événement ensemble serait ce que vous avez besoin, je pense, plus d'informations sur ce qui peut être trouvé ici . Cependant ceci est pour la version WPF du radtreeview.
Autres conseils
Je viens d'écrire cette méthode pour vous, comme Im travaille actuellement sur le projet énorme avec contrôles Rad:
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");
}
}
}
hope u like it bro, ne jamais abandonner lors du codage
@King A.Majid: Je ne pense pas que votre logique est correcte. Qu'en est-il le paramètre "RadTreeNode n"?
Ma méthode est tout simple comme suit:
public RadTreeNode CwGetTreeNodeTopParent(RadTreeNode nodeToFindTopParent)
{
var parentNode = nodeToFindTopParent.ParentNode;
if (parentNode.Level == 0)
return parentNode;
parentNode = CwGetTreeNodeTopParent(parentNode);
return parentNode;
}
Vous devez vérifier le nœud (qui est de trouver le parent en haut) pour vous assurer qu'il est pas le plus haut niveau.
Par exemple, nous voulons trouver le parent haut pour selectedNode:
if(selectedNode.Level != 0)
{
var topParent = CwGetTreeNodeTopParent(selectedNode);
//To do something here.
}