【发布时间】:2010-12-30 12:46:42
【问题描述】:
我在这个树视图中有一个 RadTreeView 和很多节点。我想要做的是,当一个节点单击时,我想获得顶部的父节点。我怎样才能做到这一点?结构是这样的:
- 父母
- 儿童
3.孩子的孩子
4.选定节点
3.孩子的孩子
3.孩子的孩子
- 儿童
当我选择“4.selected node”时,我希望能够不通过调用该方法三次来获得顶部父节点。
【问题讨论】:
标签: telerik radtreeview
我在这个树视图中有一个 RadTreeView 和很多节点。我想要做的是,当一个节点单击时,我想获得顶部的父节点。我怎样才能做到这一点?结构是这样的:
当我选择“4.selected node”时,我希望能够不通过调用该方法三次来获得顶部父节点。
【问题讨论】:
标签: telerik radtreeview
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 版本。
【讨论】:
我刚刚为你编写了这个方法,因为我现在正在使用 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");
}
}
}
希望你喜欢它,编码时永远不要放弃
【讨论】:
@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.
}
【讨论】: