【问题标题】:Getting the parent node of selected node in RadTreeView?在 RadTreeView 中获取选定节点的父节点?
【发布时间】:2010-12-30 12:46:42
【问题描述】:

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

  1. 父母
    1. 儿童
      3.孩子的孩子
      4.选定节点
      3.孩子的孩子
      3.孩子的孩子

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

【问题讨论】:

    标签: telerik radtreeview


    【解决方案1】:
    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;
    }
    

    我认为整个活动的最后一行主要是您需要的,有关此的更多信息可以找到here。但是,这是针对 radtreeview 的 WPF 版本。

    【讨论】:

      【解决方案2】:

      我刚刚为你编写了这个方法,因为我现在正在使用 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");
                      }
                  }
      
      
               }
      

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

      【讨论】:

        【解决方案3】:

        @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.
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-02
          • 1970-01-01
          • 2019-03-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多