2013-03-23 4 views
0

У меня есть элемент управления TreeView на моей странице aspx.Выберите TreeNode в TreeView в asp.net C#

Каждый TreeNode имеет текст & Свойство ценности в этом.

, например.

TreeView Tr_View = new TreeView(); 
        TreeNode TrNode=new TreeNode("ABC","1"); 
        Tr_View.Nodes.Add(TrNode); 
        TrNode = new TreeNode("DEF", "5"); 
        Tr_View.Nodes.Add(TrNode); 
        TrNode = new TreeNode("GHI", "9"); 
        Tr_View.Nodes.Add(TrNode); 
        TrNode = new TreeNode("JKL", "11"); 
        Tr_View.Nodes.Add(TrNode); 

Проблема в том, что я хочу, чтобы выбрать 3-го узла на основе его значения «9»

ответ

2

Используйте следующий код, чтобы найти узел со значением «9» и выберите его:

var node = Tr_View.FindNode("9"); 
node.Select(); 

Обратите внимание, что «9» - это путь к узлу. Поэтому, если у вас будут узлы на уровне без root , вам нужно будет указать полный путь, например «root.child.9».

Если вы не полный путь, вероятно, лучший способ найти узел, основанный на значении узла будет пересекать все узлы дерева:

using System.Linq; 
using System.Collections.Generic; 
... 
IEnumerable<TreeNode> GetAllNodes() 
{ 
    Stack<TreeNode> roots = new Stack<TreeNode>(Tr_View.Nodes); 
    while(roots.Count > 0) 
    { 
    var node = roots.Pop(); 
    foreach (var child in node.ChildNodes) 
     roots.Push(child); 

    yield return node; 
    } 
} 
... 
var allNodesWithValue9 = GetAllNodes().Where(n => n.Value == "9"); 
+0

.SelectedNode является READ ONLY свойство. Ваше первое решение не работает – PTansey

+1

Спасибо, я исправил код. – Alexander