在radtreeview中获取所选节点的父节点?
-
14-10-2019 - |
题
我有一个radtreeview和此treeview中的许多节点。我想做的是,当节点单击时,我想获得顶级父节点。我怎样才能做到这一点?结构就是这样:
- 父母
- 孩子
3.孩子的孩子
4.选择节点
3.孩子的孩子
3.孩子的孩子
- 孩子
当我选择“ 4.选择节点”时,我希望能够通过三次调用该方法来获得顶级母节节点。
解决方案
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版本。
其他提示
我刚刚为您编写了这种方法,因为我现在正在通过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");
}
}
}
希望你喜欢它,编码时永远不会放弃
@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;
}
您应该检查节点(要找到顶级父母),以确保它不是最高级别。
例如,我们想找到Selected Node的顶级父母:
if(selectedNode.Level != 0)
{
var topParent = CwGetTreeNodeTopParent(selectedNode);
//To do something here.
}
不隶属于 StackOverflow