Domanda

Ho un RadTreeView e un sacco di nodi in questo TreeView. quello che voglio fare è, quando un nodo cliccato voglio ottenere il nodo superiore genitore. Come posso fare questo? la struttura è in questo modo:

  1. Parent
    1. Bambino
      di 3.Child bambino
      4.selected nodo
      di 3.Child bambino
      figlio di 3.Child

Quando seleziono il "nodo di 4.selected" Voglio essere in grado di ottenere il nodo superiore genitore non chiamando il metodo tre volte.

È stato utile?

Soluzione

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;
}

Principalmente l'ultima linea di questo intero evento sarebbe quello che ti serve mi sa, ulteriori informazioni riguardanti questo può essere trovato qui . Tuttavia questo è per la versione WPF del radtreeview.

Altri suggerimenti

Ho appena scritto questo metodo per voi, come Im ora lavorando sulla grande progetto con i controlli 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");
                }
            }


         }

La speranza u come se bro, non mollare mai quando si scrive codice

@King A.Majid: Non credo che la logica è corretta. Che cosa circa il parametro "RadTreeNode n"?

Il mio metodo è proprio semplice come segue:

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

Si dovrebbe controllare il nodo (che è quello di trovare il genitore in alto) per assicurarsi che non è il livello più alto.

Per esempio, vogliamo trovare il genitore superiore per selectedNode:

if(selectedNode.Level != 0)
{
var topParent = CwGetTreeNodeTopParent(selectedNode);
//To do something here.
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top