对数据进行递归排序以树状显示
源数据:
id 上级id
1 0
2 0
11 1
21 1
111 11
树状后显示:
1
--11
---111
2
--21
代码
#region bind TypeID
private void fn_Bind_ddl_Type()
{
DataSet ds;
BLL.MyTypeInfo bll_Type = new BLL.MyTypeInfo();
ds = bll_Type.SelectAllTypeForChoose();
this.ddl_Type.Items.Clear();
if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
DataTable dtPara = ds.Tables[0];
DataTable dtTree = new DataTable();
dtTree = dtPara.Clone();
fn_ChangeToTree(ref dtTree, dtPara, 0, "0");//从顶级开始递归遍历
this.ddl_Type.DataSource = dtTree;
this.ddl_Type.DataTextField = dtTree.Columns[1].ToString();
this.ddl_Type.DataValueField = dtTree.Columns[0].ToString();
this.ddl_Type.DataBind();
}
this.ddl_Type.Items.Insert(0, new ListItem("", "0"));
}
#endregion
#region 将信息 整理成树状
private void fn_ChangeToTree(ref DataTable dtTree, DataTable dtPara, int intLevel, string strParentTypeID)
{
intLevel++;
string strLeftPre = "";
if (intLevel > 1)
{
strLeftPre = "|" + strLeftPre.PadLeft(intLevel * 2, '-');
}
DataTable dt1 = new DataTable();//当前级别
dt1 = dtPara.Clone();
DataTable dt2 = new DataTable();//下一级
dt2 = dtPara.Clone();
for (int i = 0; i < dtPara.Rows.Count; i++)
{
DataRow dr = dtPara.Rows[i];
string strRowParentType = dr["ParentType"].ToString();
if (strRowParentType == strParentTypeID)
{
dt1.Rows.Add(dr.ItemArray);
}
else
{
dt2.Rows.Add(dr.ItemArray);
}
}
for (int j = 0; j < dt1.Rows.Count; j++)
{
DataRow dr = dt1.Rows[j];
dr["TypeName"] = strLeftPre + dr["TypeName"].ToString();
dtTree.Rows.Add(dr.ItemArray);
string strRowParentType = dr["TypeID"].ToString();
fn_ChangeToTree(ref dtTree, dt2, intLevel, strRowParentType);
}
}
#endregion
#endregion
转载于:https://www.cnblogs.com/freeliver54/archive/2011/01/28/1947009.html
对数据进行递归排序以树状显示相关推荐
- php 递归展现城市信息,PHP 递归兑现层级树状展现数据
PHP 递归实现层级树状展现数据 ? $arr['id'], 'fid' => $arr['fid'], 'name' => $arr['name'], ); } // 将数据按照缩进简单 ...
- php递归实现层级树状展开,PHP递归实现层级树状展开,php递归层级树状_PHP教程...
PHP递归实现层级树状展开,php递归层级树状 本文实例为大家分享了PHP递归实现层级树状展开的主要代码,供大家参考,具体内容如下 效果图: 实现代码: $arr['id'], 'fid' => ...
- mysql php 封装类_PHP递归实现层级树状展开的方法
这篇文章主要为大家详细介绍了PHP递归实现层级树状展开的相关资料,需要的朋友可以参考下 效果图: 实现代码: $db = mysql_connect('localhost', 'root', 'roo ...
- PHP递归实现层级树状展现数据
树状数据展现很常用,今天学习了PHP的递归,也来总结总结! PHP代码: function _getTreeList_custom1($data,$parent_id,$depth){$return_ ...
- oracle树状排序,Oracle树状结构查询
oracle用表的形式组织数据,某些数据还呈现树状结构,提供了对这些数据的组织.查询等功能.在扫描树结构表时,要依次访问树中的每一个节点,并且每个节点只能访问一次,其步骤如下: 1:从根节点开始 2: ...
- P3573-[POI2014]RAJ-Rally【拓扑排序,二分+树状数组】
正题 题目链接:https://www.luogu.com.cn/problem/P3573 题目大意 nnn个点mmm条边的DAGDAGDAG,删掉一个点使得最长路最短. 解题思路 先跑一遍拓扑排序 ...
- 【HDU - 6203】ping ping ping(lca+贪心思想,对lca排序,树状数组差分)
题干: 给出一个n+1个点的树,以及p个点对,需要断开一些点,使得这p个点对路径不连通.输出应该断开的最少点数. 解题报告: 从那p个点对入手的话:首先考虑只有一对点的话,肯定是这条路径上的随便一个点 ...
- mysql递归查询之后的排序问题_MySQL递归排序查询+树节点生成
mysql 递归排序查询 备注:producttype 排序表,producttype.ptype父节点 ,producttype .id 主键,showTreeNodes (IN rooti mys ...
- 数据可视化【十一】树状图
Constructing a node-link tree visualization 首先将节点之间的连线画出来. 使用json函数读取文件以后,使用hierarchy等函数得到连线的数组,然后绑定 ...
最新文章
- 重磅直播|光学3D测量技术原理及应用
- java 正则 捕获_Java通过正则表达式捕获组中的文本
- 四种参数传递的形式——URL,超链接,js,form表单
- OpenCV 腐蚀和膨胀
- java中打开指定的文件夹
- ThreadLocal是什么?
- 十六进制字符串转整形
- python对比两组字符串差异_python – 比较两个不同文件中的字符串的脚本
- python 0xa什么意思_python使用xpath中遇到:Element a at 0x39a9a80到底是什么?
- 最好用AI抠图的软件,方便你,我,他。
- 高通备份线刷包工具软件 备份自己机型的线刷包
- 【开发工具】【Java开发工具 IDEAIU-2017.3】【安装和激活】
- 新手如何做抖音直播带货?新号如何快速获取直播推荐流量?
- Mysql开启局域网连接
- 中国石油沥青行业市场供需与战略研究报告
- iOS即时通讯进阶 - CocoaAsyncSocket源码解析(Connect篇)
- 考研数学之多元函数微积分
- char *与char []的区别
- 写一个Singleton模式的例子
- 计算机d盘d桌面不见了,计算机D驱动器中的文件夹自动消失. 我没有隐藏或删除它. 我为什么找不到它?...