如果维护一个老系统就总会遇到各种问题,而这次是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控件循环遍历的更多相关文章

  1. Microsoft Visual Studio 2010下log4cplus的安装,集成,测试

    原文:http://blog.csdn.net/eclipser1987/article/details/6904301 log4cplus是C++编写的开源的日志系统,功能非常全面,用到自己开发的工 ...

  2. C# Winform学习---MDI窗体的设计,PictureBox控件(图片上一页下一页),Timer控件,MenuStrip控件

    一.MDI窗体的设计 1.MDI简介 MDI(Multiple Document Interface)就是所谓的多文档界面,与此对应就有单文档界面 (SDI), 它是微软公司从Windows 2.0下 ...

  3. Visual Studio C#的winform/webform/asp.net控件命名规范

    控件命名规范 类型 前缀 示例 AdRotator adrt adrtTopAd Button btn btnSubmit Calendar cal calMettingDates CheckBox ...

  4. Visual studio之C#跨线程调用UI控件

    背景 当前串口通讯项目,多个线程需要同时利用richTextBoxMsg控件打印信息,直接调用会造成线程不安全,严重的时候会直接导致UI线程挂掉,因此本篇就跨线程调用UI控件做个记录. 正文 定义控件 ...

  5. Visual Studio 2010下WorldWind编译问题集合

    首先:获取WORLDWIND最新代码——建议不要直接下载源代码包进行编译,一是因为它并不是最新版本的代码,WW的代码最近经常更新:二是缺很多依赖的类库.建议用TortoiseSVN客户端从source ...

  6. Visual Studio 2010 下 安装RGiesecke.DllExport

    RGiesecke.DllExport 在 UnmanagedExports 中.安装过程如下: 1.首先在"工具"菜单下的"扩展管理器"中,安装 NuGet ...

  7. 把System.Drawing.Image对象img,在页面的Image控件上显示出来

    1.保存到本地,然后调用. //定义文件名    string iname = DateTime.Now.ToString("yyMMddhhmmss"); //保存到服务器,b是 ...

  8. c++ builder TreeView控件节点遍历

    void __fastcall TForm1::GetRootNodes(TTreeView *DestTreeView)//得到所有根节点 { TTreeNode *vNode = NULL; vN ...

  9. WIN7环境下CUDA7.5的安装、配置和测试(Visual Studio 2010)

    以下基于"WIN7(64位)+Visual Studio 2010+CUDA7.5". 系统:WIN7,64位 开发平台:Visual Studio 2010 显卡:NVIDIA ...

随机推荐

  1. printf/scanf格式

    (1)打印字符 char c; printf("%c",c); (2)打印整形 int i; printf("%d",i); //有符号十进制数 printf( ...

  2. 狄克斯特拉(Dijkstra)算法

    引入 从A点到B点的最短路径是什么?求最短路径的两种算法:Dijkstra算法和Floyd算法. 网图:带权图. 非网图最短路径:两顶点间经过的边数最少的路径.(非网图也可被理解为各边权值为1的网图. ...

  3. [刷题] 1022 D进制的A+B (20分)

    思路 设t = A + B,将每一次t % d的结果保存在int类型的数组s中 然后将t / d,直到 t 等于 0为止 此时s中保存的就是 t 在 D 进制下每一位的结果的倒序 最后倒序输出s数组 ...

  4. 山东浪潮超越3B4000申泰RM5120-L

    龙芯解决方案 首页 > 龙芯业务 > 龙芯解决方案和产品生态 > 整机产品 > 服务器 > 详情 超越申泰RM5120-L 服务器 超越申泰RM5120-L 服务器 20 ...

  5. 007.Python循环语句while循环嵌套

    1 使用两个循环打印十行小星星 j = 0 while j<10: # 打印一行十个小星星 i = 0 while i<10: print("*",end=" ...

  6. 下面附上top和sar的使用方法,方便参考! "top"工具

    下面附上top和sar的使用方法,方便参考! "top"工具 使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b] 说明:即时显示 ...

  7. Linux 文件隐藏属性-创建文件默认权限

    Linux特殊权限介绍 # password原本只有root可以访问但是为什么普通用户在修改密码的时候也可以改里面的内容. [root@gong ~]# ll /usr/bin/passwd -rws ...

  8. SUSE12 网卡配置、SSH远程配置、解决CRT密钥交换失败,没有兼容的加密程序

    安装好SUSE系统后发现网卡配置与Centos有些差异,多网卡的同学可以参考一下(我的是双网卡) SUSE系统默认第一块网卡自动获取IP,如果是多网卡,需要手动配置,由于我的第一个网卡获取正确无需更改 ...

  9. python set去重简析

    python 中的集合可以去重是实现了__hash__与__eq__ 当class没有定义__eq__()方法时,那么它也不应该定义__hash__()方法.如果它定义了__eq__()方法,却没有定 ...

  10. sql生成可读性逻辑图

    下面这张图是我自己画的sql逻辑图.规定了一些画法.然后画出来是这样的. 因为经常要读别人的sql,又臭又长,可读性很差,于是想做一个程序自动生成的逻辑图. 为什么不用执行语法树,因为个人觉得语法树可 ...