源数据:
id  上级id
1    0
2    0
11   1
21   1
111  11

树状后显示:
1
--11
---111
2
--21

代码

#region 自定义方法

#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

对数据进行递归排序以树状显示相关推荐

  1. php 递归展现城市信息,PHP 递归兑现层级树状展现数据

    PHP 递归实现层级树状展现数据 ? $arr['id'], 'fid' => $arr['fid'], 'name' => $arr['name'], ); } // 将数据按照缩进简单 ...

  2. php递归实现层级树状展开,PHP递归实现层级树状展开,php递归层级树状_PHP教程...

    PHP递归实现层级树状展开,php递归层级树状 本文实例为大家分享了PHP递归实现层级树状展开的主要代码,供大家参考,具体内容如下 效果图: 实现代码: $arr['id'], 'fid' => ...

  3. mysql php 封装类_PHP递归实现层级树状展开的方法

    这篇文章主要为大家详细介绍了PHP递归实现层级树状展开的相关资料,需要的朋友可以参考下 效果图: 实现代码: $db = mysql_connect('localhost', 'root', 'roo ...

  4. PHP递归实现层级树状展现数据

    树状数据展现很常用,今天学习了PHP的递归,也来总结总结! PHP代码: function _getTreeList_custom1($data,$parent_id,$depth){$return_ ...

  5. oracle树状排序,Oracle树状结构查询

    oracle用表的形式组织数据,某些数据还呈现树状结构,提供了对这些数据的组织.查询等功能.在扫描树结构表时,要依次访问树中的每一个节点,并且每个节点只能访问一次,其步骤如下: 1:从根节点开始 2: ...

  6. P3573-[POI2014]RAJ-Rally【拓扑排序,二分+树状数组】

    正题 题目链接:https://www.luogu.com.cn/problem/P3573 题目大意 nnn个点mmm条边的DAGDAGDAG,删掉一个点使得最长路最短. 解题思路 先跑一遍拓扑排序 ...

  7. 【HDU - 6203】ping ping ping(lca+贪心思想,对lca排序,树状数组差分)

    题干: 给出一个n+1个点的树,以及p个点对,需要断开一些点,使得这p个点对路径不连通.输出应该断开的最少点数. 解题报告: 从那p个点对入手的话:首先考虑只有一对点的话,肯定是这条路径上的随便一个点 ...

  8. mysql递归查询之后的排序问题_MySQL递归排序查询+树节点生成

    mysql 递归排序查询 备注:producttype 排序表,producttype.ptype父节点 ,producttype .id 主键,showTreeNodes (IN rooti mys ...

  9. 数据可视化【十一】树状图

    Constructing a node-link tree visualization 首先将节点之间的连线画出来. 使用json函数读取文件以后,使用hierarchy等函数得到连线的数组,然后绑定 ...

最新文章

  1. 重磅直播|光学3D测量技术原理及应用
  2. java 正则 捕获_Java通过正则表达式捕获组中的文本
  3. 四种参数传递的形式——URL,超链接,js,form表单
  4. OpenCV 腐蚀和膨胀
  5. java中打开指定的文件夹
  6. ThreadLocal是什么?
  7. 十六进制字符串转整形
  8. python对比两组字符串差异_python – 比较两个不同文件中的字符串的脚本
  9. python 0xa什么意思_python使用xpath中遇到:Element a at 0x39a9a80到底是什么?
  10. 最好用AI抠图的软件,方便你,我,他。
  11. 高通备份线刷包工具软件 备份自己机型的线刷包
  12. 【开发工具】【Java开发工具 IDEAIU-2017.3】【安装和激活】
  13. 新手如何做抖音直播带货?新号如何快速获取直播推荐流量?
  14. Mysql开启局域网连接
  15. 中国石油沥青行业市场供需与战略研究报告
  16. iOS即时通讯进阶 - CocoaAsyncSocket源码解析(Connect篇)
  17. 考研数学之多元函数微积分
  18. char *与char []的区别
  19. 写一个Singleton模式的例子
  20. 计算机d盘d桌面不见了,计算机D驱动器中的文件夹自动消失. 我没有隐藏或删除它. 我为什么找不到它?...

热门文章

  1. Setup 和Hold (建立时间和保持时间)解析
  2. C/C++结构体四字节数据对齐
  3. Word文档如何自动生成文献摘要?
  4. python以及MATLAB终止循环的快捷键
  5. 前端各阶段资源,学得完算我输
  6. Kubernetes的HTTPS和证书问题,汇总
  7. 9月9日项目群管理活动讨论
  8. HGST:中国将成为新云端运算大国
  9. Enum.GetHashCode()的问题
  10. WM8962 HPOUT 信号强度 时间周期