当前位置: 首页 > 编程日记 > 正文

非递归一次性加载分类数据到TreeViw

不是经常用,发现再次用到时又要再写一遍,这次花点时间记录一下

代码:
-------------------------------------

 private void InitView()
    {
        DataView dv = CommodityClassBLL.Query().Tables[0].DefaultView;
  
            if (dv.Count >= 1)
            {

                dv.Sort = "Code";
                string curCode = "";
                string prvCode = dv[0]["code"].ToString();
                trvClass.Nodes.Clear();
                trvClass.Nodes.Add(new TreeNode("行业分类", "0"));
                trvClass.Nodes[0].SelectAction = TreeNodeSelectAction.None;
               
                TreeNode root = new TreeNode(dv[0]["ClassName"].ToString(), dv[0]["ClassID"].ToString());
                trvClass.Nodes[0].ChildNodes.Add(root);
                root.NavigateUrl = string.Format(JsText, dv[0]["ClassName"].ToString(), dv[0]["ClassID"].ToString(), root.ValuePath);
                TreeNode prvNode = trvClass.Nodes[0].ChildNodes[0];//定位prvNode为第一个实际数据节点
                //prvNode用来寻找当前节点的父节点

                for (int i = 1; i < dv.Count; i++)
                {
                    curCode = dv[i]["Code"].ToString();
                    int classID = (int)dv[i]["ClassID"];
                    string className = dv[i]["ClassName"].ToString();
                    int len = curCode.Length - prvCode.Length;
                    if (len > 4)//表示当前节点是prvNode节点子节点的子节点
                    {
                       //那么prvNode.ChildNodes[prvNode.ChildNodes.Count-1]
                       //即是当前接点的父节点

                        prvNode = prvNode.ChildNodes[prvNode.ChildNodes.Count - 1];
                        prvCode = curCode.Substring(0, curCode.Length - 4);
                    }
                    else if (len < 4)//表示当前节点的父节点是prvNode向上的某个父节点
                    {
                        int level = Math.Abs(len / 4) + 1;
                        for (int j = 1; j <= level; j++)
                        {
                            prvNode = prvNode.Parent;//回溯
                        }
                        prvCode = curCode.Substring(0, curCode.Length - 4);
                    }

                    //(len==4)表示当前节点是前一节点的的直接子节点(参考下面的截图)
                    TreeNode node = new TreeNode(className, classID.ToString());
                    prvNode.ChildNodes.Add(node);
                   
                    node.NavigateUrl = string.Format(JsText, className, classID, node.ValuePath);

                   //标记选中的接点,并展开其父节点
                    if (classID == SelectedClassID)
                    {
                        node.Selected = true;
                        while (node.Parent != null)
                        {
                            node.Parent.Expand();
                            node = node.Parent;
                        }
 
                    }
                }
                if (trvClass.Nodes[0].ChildNodes != null)
                    trvClass.Nodes[0].Expand();

            }
   
    }

-------------------------------

说明:
  dv里面的数据结构如

转载于:https://www.cnblogs.com/wdfrog/archive/2008/09/26/1299549.html

相关文章:

什么是SESSION?(二)

本篇图文讨论了SESSION多服务器共享问题以及SESSION操作的效率问题。本篇微信图文由钟锦提供。

leetcode--两数之和--python

文章目录题目题目详情示例解题代码代码运行结果体会题目 题目详情 给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找出和为目标值的那 两个 整数&#xff0c;并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;你不能重复…

关于 OpenIdConnect 认证启用 HTTPS 回调 RedirectUri 不生效问题

在搭建 IdentityServer 服务端后&#xff0c;我们尝试使用了 OIDC(OpenID Connect) 的中间件来代替了原先的 Session 系统认证方式&#xff0c;起初采用的是 HTTP 协议&#xff0c;一切都没有什么问题&#xff0c;最近启用全站 HTTPS 后&#xff0c;发现登陆会跳转到 HTTP的页面…

C#中使用GUID

GUID&#xff08;全局统一标识符&#xff09;是指在一台机器上生成的数字&#xff0c;它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成GUID的API。生成算法很有意思&#xff0c;用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。GUID的唯一缺陷在于生…

Matlab与线性代数 -- 对角矩阵

本微信图文详细介绍了Matlab中diag()函数的应用。

leetcode--对称二叉树--python

文章目录题目题目详情示例说明解题代码代码运行结果体会题目 题目详情 给定一个二叉树&#xff0c;检查它是否是镜像对称的。 示例 例如&#xff0c;二叉树 [1,2,2,3,4,4,3] 是对称的。 1/ \2 2/ \ / \ 3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1…

IPV6的设置问题!

最近一段在研究IPV6&#xff0c;在网上搜了好多资料&#xff0c;但是感觉大部分都不实在&#xff0c;都是泛泛而谈&#xff0c;实用性不强&#xff0c;故决定做点什么&#xff01;正所谓该出手时就出手&#xff0c;风风火火闯九州哦~~ IPV6设置步骤&#xff1a; 1.首先查看你时…

Matlab与线性代数 -- 数组与矩阵的乘幂

本微信图文详细介绍了数组的乘幂运算power()与矩阵的乘幂运算mpower()。

Docker 公司是如何做社区的?

今天看了一个Docker公司是如何做社区的PPT&#xff0c;演讲者是Docker公司的市场部老大。Docker从发布之初就受到了开发者的关注&#xff0c;1.0版本发布的时候Docker就收到了超过460位贡献者的8741条改进建议&#xff0c;Docker也承认是社区帮助他们迅速达到了这一新的里程碑。…

leetcode--整数反转--python

文章目录题目题目详情示例注意解题代码小知识代码运行结果体会题目 题目详情 给出一个 32 位的有符号整数&#xff0c;你需要将这个整数中每位上的数字进行反转。 示例 输入: 123 输出: 321输入: -123 输出: -321输入: 120 输出: 21注意 假设我们的环境只能存储得下 32 位…

水晶报表调用存储过程的问题

前言&#xff1a;现在碰到了水晶报表调用存储过程的问题&#xff0c;问题是这样的&#xff1a;ERP软件里有很多的数据表&#xff0c;有些报表的字段要从多个数据表里取数据&#xff0c;并且要对数据进行处理&#xff0c;来作为报表的字段&#xff0c;我看了些资料&#xff0c;说…

iOS-ARC_Xcode检测循环引用

iOS-ARC_Xcode检测循环引用 一&#xff0c;在桌面上新建立一个工程&#xff0c;在ViewController.m中输入如下代码&#xff1a; - (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.NSMutableArray *firstArr…

什么是SESSION?(三)

本微信图文通过一个利用数据库的方式存储Session的例子&#xff0c;深入介绍了对Session机制的理解。本微信图文由钟锦提供。

leetcode--回文数--python

文章目录题目题目详情示例解题代码代码运行结果体会题目 题目详情 判断一个整数是否是回文数。回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 示例 输入: 121 输出: true输入: -121 输出: false 解释: 从左向右…

DevXpress 控件: 第一篇: 将 Master_Details 关系进行到底--XtraPivotGridControl控件

一. 控件说明: XtraPivotGridControl&#xff1b;数据控件 二. 控件特点: 1. 支持行, 列字段拖动, 对调 支持行, 列字段的添加, 移除 支持数据字段的添加, 移除, 对调 2. 支持以行, 列字段排序 支持以过滤字段排序 3. 支持行, 列字段过滤 …

JNI与NDK学习第二篇-----应用篇

2019独角兽企业重金招聘Python工程师标准>>> 1.安装配置NDK 1). 解压NDK的zip包到非中文目录(最好英文目录不要带空格) 2). 配置path : 解压后NDK的根目录----->ndk-build 2.给AS关联NDK 1). local.properties中添加配置 ndk.dirE\:\\Android\\sdk\\android-…

数据结构与算法课程的代码链接

VS2005版本 http://download.csdn.net/detail/lsgo_myp/9713329 VS2015版本 http://download.csdn.net/detail/lsgo_myp/9730592

leetcode--字符串转换为整数--python

文章目录题目题目详情说明示例解题代码思路代码运行结果最佳方案题目 题目详情 请你来实现一个 atoi 函数&#xff0c;使其能将字符串转换成整数。 首先&#xff0c;该函数会根据需要丢弃无用的开头空格字符&#xff0c;直到寻找到第一个非空格的字符为止。 当我们寻找到的…

什么是自组织特征映射网络?

什么是自组织特征映射网络&#xff1f;

理解jQuery对象$.html

如果要比喻jQuery和原生javascript的关系&#xff0c;我个人认为是自动档和手动档汽车的区别。使用原生javascript&#xff0c;可以知道离合器以及档位的作用&#xff1b;而使用jQuery&#xff0c;则把离合器和手动档位封装到函数&#xff0c;直接前进、后退或驻车即可。所以&a…

精通ASP.NET中弹出窗口技术

本文讨论如何以ASP.NET中的CodeBehind方式实现各种弹出窗口&#xff0c;实现与弹出窗口的交互。并探讨常用非标准IE浏览器对弹出的窗口的各种过滤行为及使用弹出窗口相应对策&#xff0c;以期给出使用弹出窗口的一个通用较优方案。 关键词&#xff1a;ASP.NET、CodeBehind、过滤…

leetcode--删除排序数组中的重复项--python

文章目录题目题目详情示例说明解题代码思路代码运行结果最佳方案题目 题目详情 给定一个排序数组&#xff0c;你需要在原地删除重复出现的元素&#xff0c;使得每个元素只出现一次&#xff0c;返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在原地修改…

转换人民币大小金额

1 usingSystem; 2 3 namespaceTest 4 { 5 /**////<summary>6 ///Rmb 的摘要说明。 7 ///</summary>8 publicclassRmb 9 { 10 /**////<summary>11 ///转换人民币大小金额 12 ///</summary>13 ///<param name"num">金额</param>14…

偏执却管用的 10 条 Java 编程技巧

经过一段时间的编码&#xff08;咦&#xff0c;我已经经历了将近20年的编程生涯&#xff0c;快乐的日子总是过得很快&#xff09;&#xff0c;我们开始感谢那些好习惯。因为&#xff0c;你知道… “任何可能出错的事情&#xff0c;最后都会出错。” 这就是人们为什么喜欢进行“…

如何利用SOM网络进行柴油机故障诊断

如何利用SOM网络进行柴油机故障诊断

leetcode--删除排序链表中的重复元素--python

文章目录题目题目详情示例解题代码思路代码运行结果最佳方案题目 题目详情 给定一个排序链表&#xff0c;删除所有重复的元素&#xff0c;使得每个元素只出现一次。 示例 输入: 1->1->2 输出: 1->2输入: 1->1->2->3->3 输出: 1->2->3解题代码 …

如何使用 UserAccountControl 标志操纵用户帐户属性

转载&#xff1a; http://support.microsoft.com/kb/305144 概要 在打开用户帐户的属性后&#xff0c;单击帐户选项卡&#xff0c;然后选中或清除“帐户选项”对话框中的复选框&#xff0c;则会将数值分配给 UserAccountControl 属性。分配给该属性的值通知 Windows 已启用了哪…

程序员 专属的新年祝福原来是这样的! (附中奖名单)

程序员的新年祝福会是什么样的&#xff1f;我们共收到了97位 OSCer 的回复&#xff0c;以下为支持数排名前十的祝福语&#xff1a; yale8848&#xff08;支持数&#xff1a;10&#xff09; document.write("") &#xff08;小编&#xff1a;捂脸&#xff0c;不过不知…

LSGO代码小组第16周复盘日志

LSGO代码小组第16周复盘日志&#xff0c;汇报人&#xff1a;高勇

leetcode--买股票的最佳时机II--python

文章目录题目题目详情注意示例代码思路解题代码运行结果最佳方案题目 题目详情 给定一个数组&#xff0c;它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易&#xff08;多次买卖一支股票&#xff09;。…