Ottenere il nodo padre del nodo selezionato in RadTreeView?
-
14-10-2019 - |
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:
- Parent
- Bambino
di 3.Child bambino
4.selected nodo
di 3.Child bambino
figlio di 3.Child
- Bambino
Quando seleziono il "nodo di 4.selected" Voglio essere in grado di ottenere il nodo superiore genitore non chiamando il metodo tre volte.
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.
}