C#递归加载目录树
/// 获取目录管理信息集合
/// </summary>
/// <returns></returns>
public List<CatalogTree> GetCatalogTree()
{
List<CatalogTree> list = new List<CatalogTree>();
var db = DatabaseFactory.CreateDatabase("ELManage");
string sql = "select KeyId,CatalogName,ParentId,SortCode,IsFolder from EL_Catalog where EnableMark=1";
DbCommand cmd = db.GetSqlStringCommand(sql);
DataTable dt = db.ExecuteDataTable(cmd);
; i < dt.Rows.Count; i++)
{
DataRow dr = dt.Rows[i];
CatalogTree model = new CatalogTree();
model.keyid = Convert.ToString(dr["KeyId"]);
model.catalogname = Convert.ToString(dr["CatalogName"]);
model.parentid = Convert.ToString(dr["ParentId"]);
if (!Convert.IsDBNull(dr["SortCode"]))
{
model.sortcode = Convert.ToInt32(dr["SortCode"]);
}
if (!Convert.IsDBNull(dr["IsFolder"]))
{
model.isfolder = Convert.ToInt32(dr["IsFolder"]);
}
list.Add(model);
}
//获取根节点
var mds = list.Where(c => c.parentid == "-").OrderBy(t => t.sortcode).ToList();
foreach (var item in mds)
{
//获取子节点
item.children = GetChildrens(list, item);
}
return mds;
}
递归获取子节点:
/// 获取目录管理信息集合
/// </summary>
/// <returns></returns>
public List<CatalogTree> GetCatalogTree()
{
List<CatalogTree> list = new List<CatalogTree>();
var db = DatabaseFactory.CreateDatabase("ELManage");
string sql = "select KeyId,CatalogName,ParentId,SortCode,IsFolder,TableName from EL_Catalog where EnableMark=1";
DbCommand cmd = db.GetSqlStringCommand(sql);
DataTable dt = db.ExecuteDataTable(cmd);
; i < dt.Rows.Count; i++)
{
DataRow dr = dt.Rows[i];
CatalogTree model = new CatalogTree();
model.keyid = Convert.ToString(dr["KeyId"]);
model.catalogname = Convert.ToString(dr["CatalogName"]);
model.parentid = Convert.ToString(dr["ParentId"]);
if (!Convert.IsDBNull(dr["SortCode"]))
{
model.sortcode = Convert.ToInt32(dr["SortCode"]);
}
if (!Convert.IsDBNull(dr["IsFolder"]))
{
model.isfolder = Convert.ToInt32(dr["IsFolder"]);
}
list.Add(model);
}
//获取根节点
var mds = list.Where(c => c.parentid == "-").OrderBy(t => t.sortcode).ToList();
foreach (var item in mds)
{
//获取子节点
item.children = GetChildrens(list, item);
}
return mds;
}
C#递归加载目录树的更多相关文章
- C# IO操作(五)文件的递归加载
本篇是一个案例,其核心通过代码展示代码中的递归这个用法,程序的界面如下:
- C#:将空间数据加载到树视图控件
自己 整理了 下 代码 测试了下 还行... #region 操作树视图控件 /// <summary> /// 自定义需要的类型 /// </summary> enum Da ...
- WinForm 进程、线程、TreeView递归加载、发送邮件--2016年12月13日
进程:一个程序就是一个进程,但是也有一个程序需要多个进程来支持的情况 进程要使用的类是:Process它在命名空间:System.Diagnostics; 静态方法Start(); Process.S ...
- winform进程、线程、TreeView递归加载
进程: 一般来说,一个程序就是一个进程,不过也有一个程序需要多个进程支持的情况. 进程所使用的类:Process 所需命名空间:System.Diagnostics; 可以通过进行来开启计算机上现有的 ...
- 省市数据递归加载到TreeView
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- MVC4加载zTree树小控件
前言: 第一次学习使用MVC框架,找了个练手项目,加载zTree树小控件.下面我就一步步说明我这次练手的经历以记录.如果有什么错误,希望各位大神帮忙指正,谢谢. 第一步: 利用VS2010新建一个MV ...
- 将Xml文件递归加载到TreeView中
#region [通过XDocument的方式将Xml文件递归到TreeView控件中] //读取Xml文件(XDocument) //1.加载Xml文件 XDocument document=XD ...
- 转:zTree树控件实战篇:针对多个下拉加载zTree树应该如何做出合理的配置
今天有一个zTree的朋友遇到一个非常棘手的问题,才研究zTree树控件两天就被上头催着看成果,很是苦恼.他面对的问题就是页面内多个地方需要下拉在其文本框下方加载zTree树,由于对zTree下拉加载 ...
- python- 动态加载目录下所有的类
# 背景 自动化测试框架中model层下有很多类,用来操作mysql的,使用的时候需要把全部的类加载进来,需要使用到动态加载类 # 解决方法 使用pkgutil,内置的方法,常用的话有两个方法 ite ...
随机推荐
- python学习第四十六天dir( )函数用法
dir( )函数有点像目录的意思,但是他是包含由模块定义的名称的字符串的排序列表.这个列表包含模块中定义的所有模块,变量和函数的名称. 列举其用法 import time content = dir( ...
- A.Equivalent Prefixes
题目大意:等价数组定义为(1≤l≤r≤m)中,所有的子区间都满足最小值下标相等,找出最大的m. 题解:我们要找到最大的m,就要保证两个数组的所有子区间最小值下标相等 所以用一个单调栈来维护一个单调递增 ...
- 时间选择器moment格式化存在时差问题
时间选择器moment格式化存在时差问题解决方法: return moment(date).utc().zone(+6).format('YYYY-MM-DD')解决IE9时间选择器不能回显数据解决方 ...
- Web学习之JS总结
银角大王武Sir的博客地址 银角大王武Sir的博客地址二 1.Javascript的作用域链 由于javascript没有块级作用域,而且每个函数作为一个作用域,如果出现嵌套函数,则就会出现作用域链 ...
- pg_config - 检索已安装版本的 PostgreSQL 的信息
SYNOPSIS pg_config {--bindir | --includedir | --includedir-server | --libdir | --pkglibdir | --confi ...
- Vue build打包之后,刷新页面出现404解决方案
Vue build打包之后,刷新页面出现404,HTML5 History 模式 原因分析: vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于 ...
- 【转】一文搞懂C语言回调函数
转:https://segmentfault.com/a/1190000008293902?utm_source=tag-newest 什么是回调函数 我们先来看看百度百科是如何定义回调函数的: 回调 ...
- CSP2019初赛训练
[解释执行语言] C,C++,Pascal都是编译执行的语言,Python是解释执行. 扩展:JS.PHP也是解释运行语言.解释性灵活但是效率较低.一些解释性语言也有了也能在一定程度上编译,或者使用虚 ...
- Oracle 11g 详细安装步骤
一.Oracle 下载 注意Oracle分成两个文件,下载完后,将两个文件解压到同一目录下即可. 路径名称中,最好不要出现中文,也不要出现空格等不规则字符. 官方下地址: http://www.ora ...
- R语言里面的循环变量
for (i in 1:10) { print("Hello world") } 以上这条命令执行完之后,变量i会被保存下来!并且,i的值将是10. 程序中有多处循环的时候要非常注 ...