无限树状结构逻辑
l 应用场景特点
1)列表(Datable)
编号
|
名称
|
父编号
|
ID
|
Name
|
ParentID
|
2)仅有一个根节点,每个节点有且只有一个父节点。
典型的递归算法:
Ø 递归入口:仅有一个根节点(根节点编号)。
Ø 递归循环体:每个节点有且只有一个父节点,子节点是上级节点的子节点,又是下级节点的父节点。(孙又有子,子又有孙,子子孙孙无穷尽)
Ø 循环出口:不再有子节点。
子节点编号与父节点编号不能相同,不能交叉。
函数
/// <summary>
/// 绑定生成一个有树结构的下拉菜单
/// </summary>
/// <param name="dtNodeSets"> Datable记录数据所在的表</param>
/// <param name="strParentColumn"> ParentID表中用于标记父记录的字段</param>
/// <param name="strRootValue">根节点ID第一层记录的父记录值(通常设计为0或者-1或者Null)用来表示没有父记录</param>
/// <param name="strIndexColumn">ID索引字段,也就是放在DropDownList的Value里面的字段</param>
/// <param name="strTextColumn">Name显示文本字段,也就是放在DropDownList的Text里面的字段</param>
/// <param name="drpBind">需要绑定的DropDownList</param>
/// <param name="i">用来控制缩入量的值,请输入-1</param>
private void makeTree(DataTable dtNodeSets, string strParentColumn, string strRootValue, string strIndexColumn, string strTextColumn, DropDownList drpBind, int i)
{
//每向下一层,多一个缩入单位
i++;
DataView dvNodeSets = new DataView(dtNodeSets);
dvNodeSets.RowFilter = strParentColumn + "=" + strRootValue;
string strPading = ""; //缩入字符
//通过i来控制缩入字符的长度,我这里设定的是一个全角的空格
for (int j = 0; j < i; j++)
strPading += " ";//如果要增加缩入的长度,改成两个全角的空格就可以了
foreach (DataRowView drv in dvNodeSets)
{
ListItem li = new ListItem(strPading + "┣" + drv[strTextColumn].ToString(), drv[strIndexColumn].ToString());
drpBind.Items.Add(li);
makeTree(dtNodeSets, strParentColumn, drv[strIndexColumn].ToString(), strIndexColumn, strTextColumn, drpBind, i);
}
//递归结束,要回到上一层,所以缩入量减少一个单位
i--;
}
调用方法:
string sql = "Select JGDM,JGMC,SJJG from [C_SUBCOMPANY] order by JGDM ";
System.Data.DataTable dt = SFS.Data.SqlServer.GetSingleData.GetOnlyOneDataTable(sql);
makeTree(dt, "SJJG", "000000", "JGDM", "JGMC", drp, -1);
分享到:
相关推荐
用android中listview实现的无限级树状结构,用listview模拟实现。另外包含了一些简单的数据库读写。
通过解析Json数据生成树状结构 1、使用newtonsoft.json解析json 2、无限级 3、父子节点联动
动态数据库实现树状结构 动态数据库实现树状结构.
实现无限层树状结构菜单的源代码
Java实现文本形式的树状结构显示 Java实现文本形式的树状结构显示
这是我在项目中用到非常不错的树状结构下拉选
在jsp页面中显示树状结构功能的JavaScript
一个树状结构列表。.zip,A view of the tree structure.树状结构列表。
实现一个BBS可以采取多种方法,该项目采用树状结构来实现,用户可以很容易看出谁回复了谁,自己要回复谁也很方便.对于管理员来说,登陆管理员页面可以进行数据的增、删、查、改,项目中使用了多种分页的写法.
2个无限级树状menu带图标与唯一展开2个无限级树状menu带图标与唯一展开
android 树状结构的一个实例,只支持3级树
通过C语言对树状结构的简单介绍,可以在做BBS时用到
基于Vue-Ztree-2.0实现树状结构的展示 启动步骤: 1.cmd至前端项目根目录执行“npm install”命令 2.“npm start”命令启动项目 后端项目:tree 基于springboot、mybaits-plus、mysql实现树状结构 启动步骤: 1.mvn...
利用插件zTree实现的简易的城市树状结构的demo,适合新手练习
生成可拖拽的树状结构,节点可以通过拖拽移动,插入 很帅啊.
该段代码使用jena实现将已经构建好的本体解析为树状结构。(使用时候请使用您自己创建的本体替换掉代码中的本体)
增加系统调用,遍历系统当前所有进程的任务描述符,并将pid组织成树状结构显示,压缩包中包含源码和文档
ztree树状结构,适合做层级结构,比如组织结构,商品种类
1.可以单独导出目录的树状结构文本类型 2.可以导出目录及目录下文件的树状结构文本类型 3.可以导出纯目录信息 4.可以导出纯目录和文件的信息 5.整体的大小在10mb小巧玲珑方便使用 附带使用说明,如果有哪些不懂的...
dtree在生成简单树方面比使用Jquery的treeView要方便,代码实现的是用户选择的树状结构图。