Erhalten Sie den übergeordneten Knoten des ausgewählten Knotens in Radtreeview?
-
14-10-2019 - |
Frage
Ich habe eine Radtreeview und viele Knoten in diesem Baumview. Was ich tun möchte, ist, wenn ein Knoten klickte, möchte ich den obersten übergeordneten Knoten erhalten. Wie kann ich das machen? Die Struktur ist so:
- Elternteil
- Kind
3.Childs Kind
4. Ausgewählter Knoten
3.Childs Kind
3.Childs Kind
- Kind
Wenn ich den "4. ausgewählten Knoten" auswähle, möchte ich den obersten übergeordneten Knoten nicht erhalten, indem ich die Methode dreimal aufruft.
Lösung
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;
}
Hauptsächlich die letzte Zeile dieses gesamten Ereignisses wäre das, was Sie brauchen, weitere Informationen dazu finden Sie hier. Dies gilt jedoch für die WPF -Version des Radtreeview.
Andere Tipps
Ich habe gerade diese Methode für Sie geschrieben, da ich jetzt an großem Projekt mit Rad -Steuerelementen arbeite:
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");
}
}
}
Ich hoffe, es gefällt dir, Bruder, gib niemals beim Codieren auf
@King a.majid: Ich denke nicht, dass deine Logik korrekt ist. Was ist mit dem Parameter "RadTreenode N"?
Meine Methode ist einfach einfach wie folgt:
public RadTreeNode CwGetTreeNodeTopParent(RadTreeNode nodeToFindTopParent)
{
var parentNode = nodeToFindTopParent.ParentNode;
if (parentNode.Level == 0)
return parentNode;
parentNode = CwGetTreeNodeTopParent(parentNode);
return parentNode;
}
Sie sollten den Knoten (das oberste Eltern finden) überprüfen, um sicherzustellen, dass er nicht die höchste Ebene ist.
ZB, wir möchten das Top -Elternteil für SelectedNode finden:
if(selectedNode.Level != 0)
{
var topParent = CwGetTreeNodeTopParent(selectedNode);
//To do something here.
}