2012-04-10 68 views
3

我正在使用Telerik RadTreeView和ASP.Net C#。我能够使用以下代码来设置所选择的节点:如何设置SelectedNode并设置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。有什么建议么?

回答

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方法:) radTreeViewMenuStructure.FindNodeByValue( 将:

SelectLink(radTreeViewMenuStructure.Nodes, idToFind); 
+0

你使用的linkID是什么?只读是为RadTreeNode分配一个ID。 – 2017-10-05 23:01:12

1

你只需要还呼吁node.ExpandParentNodes();

+0

这是一个很好的帮助,我将它添加到我的问题中的代码。但它并没有解决我的问题。感谢您的输入。 – Rodney 2012-04-11 14:43:36

0

您需要做的仅仅把整棵树拴在一起。