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:

  1. Parent
    1. Enfant
      Le
      des enfants de 3.Child   noeud 4.selected
      Le
      des enfants de 3.Child enfant de 3.Child

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.

Était-ce utile?

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.
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top