0

aspx ページに TreeView コントロールがあります。

各 TreeNode には Text & Value プロパティがあります。

例えば

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

問題は、値「9」に基づいて3番目のノードを選択したいことです

4

1 に答える 1

2

次のコードを使用して、値が「9」のノードを見つけて選択します。

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

ここで「9」はノードへのパスであることに注意してください。そのため、非ルート レベルにノードがある場合は、「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");
于 2013-03-23T21:10:08.987 に答える