我将 Telerik RadTreeView 与 ASP .Net C# 结合使用。我可以使用以下代码设置选定节点:
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();
}
以上代码仅当节点刚好位于根之外且未包含在父节点中时才设置选定节点。选择包含在父节点中的节点的 ID 时,我的节点 = null。有什么建议吗?
最佳答案
.FindNodeByValue 在 TreeView 的节点中查找。它不查看每个子节点。解决方案是递归地遍历树。这是我最终解决问题的代码:
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);
关于c# - 如何在 Telerik RadTreeView 中设置 SelectedNode 和设置选中节点的 Focus?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10097427/