如何在 Telerik RadTreeView 中设置所选节点和设置所选节点的焦点
本文关键字:节点 设置 焦点 Telerik RadTreeView | 更新日期: 2023-09-27 18:30:52
我正在使用带有ASP .Net C#的Telerik RadTreeView。我能够使用以下代码设置所选节点:
var node = radTreeViewMenuStructure.Nodes.FindNodeByValue(linkID.ToString());
if (node != null) // <- equals null when not on the root of the tree
{
node.Selected = true;
node.Expanded = true;
node.ExpandParentNodes();
node.Focus();
}
仅当节点刚好离开根节点且未包含在父节点中时,上面的代码才会设置所选节点。My node = null 选择包含在父节点中的节点的 ID 时。有什么建议吗?
.FindNodeByValue 在树视图的节点中查找。它不会查看每个子节点。解决方案是递归地走树。这是我最终解决问题的代码:
private void SelectLink(int linkID, RadTreeNodeCollection rootNodes)
{
var node = rootNodes.FindNodeByValue(linkID.ToString());
if (node != null)
{
node.Selected = true;
node.Expanded = true;
node.ExpandParentNodes();
node.Focus();
... Do some other work ...
return;
}
// for each node with children
foreach (RadTreeNode item in rootNodes.Cast<RadTreeNode>().Where(item => item.Nodes.Count > 0))
{
// Recursive call to self to walk the tree
SelectLink(linkID, item.Nodes);
}
}
然后,我只需使用根 RadTreeView 调用该方法:
SelectLink(radTreeViewMenuStructure.Nodes, idToFind);
你
只需要也调用node.ExpandParentNodes();
你只需要做:radTreeViewMenuStructure.FindNodeByValue()那将把整棵树都烧死。