0

我在这个树视图中有一个 RadTreeView 和很多节点。我想要做的是,当一个节点单击时,我想获得顶部的父节点。我怎样才能做到这一点?结构是这样的:

  1. 家长
    1. Child
      3.Child's child
      4.selected node
      3.Child's child
      3.Child's child

当我选择“4.selected node”时,我希望能够通过调用该方法三次而不是获得顶级父节点。

4

3 回答 3

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

我认为整个活动的最后一行主要是您需要的,有关此的更多信息可以在这里找到。然而,这适用于 radtreeview 的 WPF 版本。

于 2010-12-30T12:56:36.540 回答
0

我刚刚为您编写了此方法,因为我现在正在使用 Rad Controls 进行大型项目:

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


         }

希望你喜欢它兄弟,编码时永远不要放弃

于 2012-09-28T17:08:35.917 回答
0

@King A.Majid:我不认为你的逻辑是正确的。那么参数“RadTreeNode n”呢?

我的方法很简单,如下:

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

您应该检查节点(即查找最高父节点)以确保它不是最高级别。

例如,我们想要找到 selectedNode 的顶级父节点:

if(selectedNode.Level != 0)
{
var topParent = CwGetTreeNodeTopParent(selectedNode);
//To do something here.
}
于 2012-09-29T18:41:59.440 回答