• 对数据进行递归排序以树状显示


    源数据:
    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(0new 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
  • 相关阅读:
    Android中fragment之间和Activity的传值、切换
    javascript--经典实例锦集
    Android中ListView动态加载数据
    Android开发之调用系统图库及相机
    Android 相机开发详解
    RTSP实例解析
    【Android UI设计与开发】第18期:滑动菜单栏(三)SlidingMenu动画效果的实现
    js 第二小步
    JavaScript初步+基本函数
    javaweb实战开始
  • 原文地址:https://www.cnblogs.com/freeliver54/p/1947009.html
Copyright © 2020-2023  润新知