3

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();
        }

上記のコードは、ノードがルートから離れており、親ノードに囲まれていない場合にのみ、選択されたノードを設定します。親ノード内に含まれるノードの ID を選択すると、My node = null になります。助言がありますか?

4

3 に答える 3

3

.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);
于 2012-04-11T14:41:37.490 に答える
1

あなたも電話する必要がありますnode.ExpandParentNodes();

于 2012-04-10T22:49:43.267 に答える