Erhalten Sie den übergeordneten Knoten des ausgewählten Knotens in Radtreeview?

StackOverflow https://stackoverflow.com/questions/4562697

  •  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:

  1. Elternteil
    1. Kind
      3.Childs Kind
      4. Ausgewählter Knoten
      3.Childs Kind
      3.Childs 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.

War es hilfreich?

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.
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top