非递归一次性加载分类数据到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
非递归一次性加载分类数据到TreeViw相关推荐
- 一次性加载树结构数据表 mapper加载
************************************************************* @Override public List<Organization& ...
- 腾讯云图-一次性加载全部数据
https://cloud.tencent.com/document/product/665/42130
- Qt解决UI界面一次性加载数据过多卡顿的问题
关于Qt如何解决UI界面一次性加载太多数据而卡顿的问题 思路分析: 以QTableWidget电子词典为例,每次模糊查询单词时都会产生几十种,几千甚至上万种不同的结果: 例如我们输入a,对a进 ...
- ios网络学习------4 UIWebView的加载本地数据的三种方式
ios网络学习------4 UIWebView的加载本地数据的三种方式 分类: IOS2014-06-27 12:56 959人阅读 评论(0) 收藏 举报 UIWebView是IOS内置的浏览器, ...
- 上拉加载更多后台数据_6-7【微信小程序全栈开发课程】记录页面(七)--分页加载记录数据...
现在是一次性加载所有的记录数据,数据多的时候,会加载比较慢,所以我们改成分页加载,一次最多加载15条数据 每次拉倒底部都会自动加载下一页的数据,知道所有的数据加载完成 1.添加data变量 编辑rec ...
- Android Room联合AsyncListUtil实现RecyclerView分页加载ORM数据
Android Room联合AsyncListUtil实现RecyclerView分页加载ORM数据 我之前写了一系列关于AsyncListUtil实现RecyclerView和ListView的分页 ...
- Tensorflow2.* 加载和预处理数据之用 tf.data 加载 Numpy数据(2)
Tensorflow2.* 机器学习基础知识篇: 对服装图像进行分类 使用Tensorflow Hub对未处理的电影评论数据集IMDB进行分类 Keras 机器学习基础知识之对预处理的电影评论文本分类 ...
- Android 应用开发 之通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比
Android 应用开发 之通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比 标签: AndroidAsyncTaskThreadPool异步加载view 2 ...
- AE按行政区范围加载图层数据(转载)
大家可能在平时开发中可能会遇到按行政区加载图层数据的需求,比方说整个国土资源部有某一类型专题数据有若干图层,每个图层数据的范围是整个中国,这时国土资源部开发一套系统可能有这个需求,每个省只能加载本省的 ...
最新文章
- 新增一个主键自增长_为什么InnoDB宜用自增主键
- 干货丨一文看懂什么是“自然语言处理”
- 两表格合并_使用 Python 合并多个格式一致的 Excel 文件
- (EM算法)The EM Algorithm
- 一鼓作气 博客--第六篇 note6
- 执行caffe的draw_net.py出现“GraphViz's executable dot not found”的解决方法
- 计算机专业的第二批本科大学,第二批本科院校
- 数据结构顺序表基本流程
- 【新冠疫情】5G到底能为抗疫做点啥,这篇文章终于讲清楚了
- 【Flink】Flink 1.9 版本 web UI 突然没有日志
- Android传感器编程入门(三)
- 一个小时快速搭建微信小程序教程
- 捷联惯导系统学习7.3(惯性/卫星组合导航 )
- 2017ACM暑期多校联合训练 - Team 8 1011 HDU 6143 Killer Names (容斥+排列组合,dp+整数快速幂)...
- ssl(https)部署指南
- splash安装和简单使用
- 从Daemons到finalize timed out after 10 seconds
- 前端加密解密 crypto-js
- Mac – m1安装RDM – Redis桌面管理 – RedisDesktopManager – Redis可视化
- 基于 C++ 设计的(控制台)唐诗三百首【100010789】
热门文章
- 已知小红今年12岁c语言编程,C语言程序设计第轮复习习题.doc
- pytorch 训练过程acc_【图节点分类】10分钟就学会的图节点分类教程,基于pytorch和dgl...
- linux内核和cpu指令集,Linux之父:Intel别浪费时间在AVX512这类指令集、多堆核心才是正道...
- java oracle in 10000_java支持ORACLE的in不能超过1000
- 妲己智能机器人开箱_王者荣耀:妲己第二款史诗限定皮肤周三上架,全局数字流特效一览...
- python2的input,关于python2.x input函数的安全隐患
- GitHub:TensorFlow、PyTorch最全资料集锦
- 机器学习(15)精确率召回率F1-score(查看癌症预测结果的精确率、召回率)
- LeetCode刷题记录8——605. Can Place Flowers(easy)
- 原生js循环展示dom_【前端面试】用一道题讲 js 的事件循环队列