写点什么

Visual Studio 2010 下 ASPX 页面的 TreeView 控件循环遍历

用户头像
DisonTangor
关注
发布于: 3 小时前
Visual Studio 2010下ASPX页面的TreeView控件循环遍历

如果维护一个老系统就总会遇到各种问题,而这次是 TreeView 的循环遍历。对于 Visual Studio2010 上 aspx 页面的TreeView控件,我感受到了什么叫集微软之大智慧。与二叉树型不一样。我解释一下,他提供TreeNode和集合TreeNodeCollection,彼此上下级通过TreeNodeChildNodes来实现连接的。这不就是 B 树结构吗?

思考和动手

这个模型设计上很简单(如图所示),但是在遍历的时候却多了列表List的索引,而没有 Next()的迭代器,就导致用ForForeach迭代时,无法处理父Nodes子Nodes的索引切换。


思考图


编写代码:


/// <summary>/// 演示主函数/// </summary>/// <returns></returns>public void main(){    var nodes = treeView.Nodes;    // 遍历列表    for (var i = 0; i < nodes.Count; i++)    {        NodesRecursion(nodes, i);    }}
/// <summary>/// 递归遍历TreeNodes/// </summary>/// <param name="x">列表</param>/// <param name="idx">索引</param>/// <returns></returns>private TreeNodeCollection NodesRecursion(TreeNodeCollection x, int idx){ if (x == null) return null;
var y = x[idx].ChildNodes; // 检测是否全部遍历,显示全部勾选 x[idx].Checked = true;
if (y.Count == 0) { return null; } else { // 递归 for (var i = 0; i < y.Count; i++) { NodesRecursion(y, i); } } return x;}
复制代码


发布于: 3 小时前阅读数: 3
用户头像

DisonTangor

关注

怀揣一个武侠梦的男孩 2020.07.29 加入

还未添加个人简介

评论

发布
暂无评论
Visual Studio 2010下ASPX页面的TreeView控件循环遍历