using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
namespace CmsNet2.Components {
/// <summary>
/// TreeViewVisitor by Neil Chen, 2006-09-28
/// </summary>
public class TreeViewVisitor {
public TreeViewVisitor(TreeView treeView) {
this.treeView = treeView;
}
private TreeView treeView;
public TreeView TreeView {
get { return treeView; }
set { treeView = value; }
}
private void Walk(TreeNode node) {
if (node == null) {
nodes.Add(treeView.Nodes[0]);
foreach (TreeNode childNode in treeView.Nodes[0].ChildNodes) {
Walk(childNode);
}
} else {
nodes.Add(node);
foreach (TreeNode childNode in node.ChildNodes) {
Walk(childNode);
}
}
}
private List<TreeNode> nodes;
public IEnumerable<TreeNode> GetAllTreeNodes() {
nodes = new List<TreeNode>();
Walk(null);
foreach (TreeNode node in nodes) {
yield return node;
}
}
}
}
一個簡單的使用範例:遍歷所有節點,並將符合條件的節點選中。
// 創建訪問器對象
TreeViewVisitor visitor = new TreeViewVisitor(tvCategories);
// 得到“鋪平”了的所有節點集合
IEnumerable<TreeNode> nodes = visitor.GetAllTreeNodes();
// 進行你需要的訪問操作
foreach (TreeNode node in nodes) {
foreach (Category category in categories) {
if (category.CategoryId == int.Parse(node.Value)) {
node.Checked = true;
}
}
}
}