c# - 如何在 Telerik RadTreeView 中设置 SelectedNode 和设置选中节点的 Focus?

标签 c# asp.net .net telerik radtreeview

我将 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/

相关文章:

c# - 如何判断一个方法中调用了哪些方法?

c# - VS 2008 c# 预构建事件

javascript - 将整个文档移动到 iframe

c# - mschart 缩放和滚动

asp.net - 为按钮设置垂直对齐

asp.net - WinForms和ASP.NET自定义控件的通用代码

c# - 将 List<T> 作为 IEnumerable<T> 发送到方法的一些问题

c# - 如何判断匿名类型的对象是否为空?

c# - 为什么我需要显式转换来缩短三元运算符中的整数文字?

c# - 为什么通过 TPL/Tasks 执行此代码时会失败?