首页 > Web开发 > 详细

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

时间:2021-06-24 22:31:17      阅读:13      评论:0      收藏:0      [点我收藏+]

如果维护一个老系统就总会遇到各种问题,而这次是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;
}

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

原文:https://www.cnblogs.com/DisonTangor/p/14928065.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!