开发环境VS2008 (asp.net)网络开发;  数据库sqlserver  表如下( 和普通的绑定树的表,有点不同,他的父和孩子一样多)
有这样一个表    aid  aname    bid       bname
               1    a       1001      achild1
               1    a       1002      achild2
               1    a       1003      achild3
               2    b       x01       bchild1
               2    b       x02       bchild2
               3    c       d01       cchild1
                                             .............
得到 --a
       --achild1
       --achild2
       --achild3
     --b
        --bchild1
        --bchild2
      +c

解决方案 »

  1.   

    --测试数据
    DECLARE @t TABLE(ID char(3),PID char(3),Name nvarchar(10))
    INSERT @t SELECT '001',NULL ,'山东省'
    UNION ALL SELECT '002','001','烟台市'
    UNION ALL SELECT '004','002','招远市'
    UNION ALL SELECT '003','001','青岛市'
    UNION ALL SELECT '005',NULL ,'四会市'
    UNION ALL SELECT '006','005','清远市'
    UNION ALL SELECT '007','006','小分市'--深度排序显示处理
    --生成每个节点的编码累计(相同当单编号法的编码)
    DECLARE @t_Level TABLE(ID char(3),Level int,Sort varchar(8000))
    DECLARE @Level int
    SET @Level=0
    INSERT @t_Level SELECT ID,@Level,ID
    FROM @t
    WHERE PID IS NULL
    WHILE @@ROWCOUNT>0
    BEGIN
        SET @Level=@Level+1
        INSERT @t_Level SELECT a.ID,@Level,b.Sort+a.ID
        FROM @t a,@t_Level b
        WHERE a.PID=b.ID
            AND b.Level=@Level-1
    END--显示结果
    SELECT SPACE(b.Level*2)+'|--'+a.Name
    FROM @t a,@t_Level b
    WHERE a.ID=b.ID
    ORDER BY b.Sort
    /*--结果
    |--山东省
      |--烟台市
        |--招远市
      |--青岛市
    |--四会市
      |--清远市
        |--小分市
    --*/
    -----------------------------------------
      

  2.   

    static DataColumn column = new DataColumn();   
      static DataTable table = new DataTable();   
      
        static DataRow MyRow;   
    ublic static DataTable GetCategoryTree(WebInfoBase info)   
      {   
         DataTable dt = info.List(_DefaultDB, "", "[ID],[Title],[ParentID],[ChildNum],[Depth],[OrderNo]", "&version=", "[ID] ASC");   
           
         if (table.Rows.Count > 0)   
         {   
             table.Columns.Clear();   
             table.Rows.Clear();   
         }   
         CreateDataTable();   
         GetTree(dt, "0", 0);   
         return table;   
      }   
        public static void GetTree(DataTable dt, string pid, int blank)   
        {   
            string str = " ";   
            DataView dv = new DataView(dt);   
            dv.RowFilter = "ParentID = " + pid;   
            if (blank > 0)   
            {   
                string s = "";   
                if (blank == 1)   
                {   
                    str = "├";   
                }   
                for (int i = 2; i <= blank; i++)   
                {   
                    s = s + "  |  "+" "+" - ";   
                }   
                str = s + "├";   
            }   
               
            foreach (DataRowView drv in dv)   
            {   
                string id = drv["ID"].ToString();   
                string Title = drv["Title"].ToString();   
                string OrderNo = drv["OrderNo"].ToString();   
                string ParentID = drv["ParentID"].ToString();   
                string Depth = drv["Depth"].ToString();   
                string ChildNum = drv["ChildNum"].ToString();   
                   
                MyRow = table.NewRow();   
                MyRow["ID"] = int.Parse(id);   
                MyRow["Title"] = str + Title;   
                MyRow["OrderNo"] = int.Parse(OrderNo);   
                MyRow["ParentID"] = int.Parse(ParentID);   
                MyRow["Depth"] = int.Parse(Depth);   
                MyRow["ChildNum"] = int.Parse(ChildNum);   
                table.Rows.Add(MyRow);   
      
                int n = int.Parse(Depth);   
                //if (n <= 1)   
                //{   
                    n++;   
                //}   
                GetTree(dt, id, n);   
            }   
        }   
           public static void CreateDataTable()   
        {   
            table.Columns.Clear();   
            column = new DataColumn();   
            column.DataType = System.Type.GetType("System.Int32");   
            column.ColumnName = "ID";   
            table.Columns.Add(column);   
      
            column = new DataColumn();   
            column.DataType = System.Type.GetType("System.Int32");   
            column.ColumnName = "ParentID";   
            table.Columns.Add(column);   
      
            column = new DataColumn();   
            column.DataType = Type.GetType("System.String");   
            column.ColumnName = "Title";   
            table.Columns.Add(column);   
      
            column = new DataColumn();   
            column.DataType = Type.GetType("System.Int32");   
            column.ColumnName = "ChildNum";   
            table.Columns.Add(column);   
      
            column = new DataColumn();   
            column.DataType = Type.GetType("System.Int32");   
            column.ColumnName = "Depth";   
            table.Columns.Add(column);   
      
            column = new DataColumn();   
            column.DataType = Type.GetType("System.Int32");   
            column.ColumnName = "OrderNo";   
            table.Columns.Add(column);   
            //table.Columns.Clear();   
      
        }   
       
      

  3.   

    我的Blog
    http://blog.csdn.net/ws_hgo/archive/2009/01/21/3846843.aspx
      

  4.   

    不要意思哦 我想得到的是 asp.net 代码 用这个表绑定 treeview
      

  5.   

    http://www.cnblogs.com/Jinglecat/archive/2007/08/10/850090.html 这里这个大概符合楼主要求
      

  6.   

    我想在treeview的控件上绑定 上面列出的, 那样数据。不准备用代码 写树呵呵  
      

  7.   

     if (!IsPostBack)
            {
                BindJG();
            }
        }
        private void BindJG()
        {
            DataSet ds = new DataSet();
           //查询数据        
            DataTable dtb = ds.Tables[0];
            TreeNode root = new TreeNode();
            root.Value = "0";
            root.Text = "";
            root.ImageUrl = "../images/folder.gif";
            root.Expanded = true;
            this.TreeView1.Nodes.Add(root);
            initTree(dtb, "", root);
            this.TreeView1.ExpandAll();
        }
     protected void initTree(DataTable dt, string nFatherid, TreeNode fatherNode)
        {
            DataView dv = new DataView(dt);        if (nFatherid == "")
                dv.RowFilter = "depth='1'";
            else
                dv.RowFilter = "shangjjgbh='"+nFatherid+"'";
            foreach (DataRowView Row in dv)
            {
                TreeNode node = new TreeNode();
                if (fatherNode.Value == "0")//根节点
                {
                   node.Value = Row["XTBH"].ToString();
                   node.Text = Row["mc"].ToString();
                   node.NavigateUrl = "";
                   node.ImageUrl = "../images/folder.gif";
                   fatherNode.ChildNodes.Add(node);
                   initTree(dt, Row["XTBH"].ToString(), node);//递归
                }
                else
                {
                    node.Text = Row["mc"].ToString();
                    node.Value = Row["XTBH"].ToString();
                    node.ImageUrl = "../images/jg.gif";
                    fatherNode.ChildNodes.Add(node);           }
            }    }递归绑定
      

  8.   

    http://www.cnblogs.com/wfcfan/archive/2008/07/01/1233450.html
      

  9.   

     private void treeBind()
        {
            string temp = "";
            if (!IsPostBack)
            {
                string sqlstr = "exec tbtree @temp=''";
                DataSet myds = webcls.statDs(sqlstr);
                pubdt  = myds .Tables [0];
                DataTable tempdt = pubdt.Copy();
                DataView dv = new DataView(tempdt );
                temp = ddlks.SelectedValue;
                dv.RowFilter = " depname  = '"+temp +"'";
                if (dv.Count > 0)
                {
                    foreach (DataRowView mydrv in dv)
                    {
                        string depatname = mydrv["depname"].ToString().Trim();
                                                treeItem.Nodes.Add(new TreeNode(depatname ));
                            poptree(depatname, treeItem.Nodes[0], mydrv);
                           
                    }
                }
            }
        } private void poptree(string parentPart, TreeNode  parentNode, DataRowView parentRow)
        {
            string strdepname = "";
            DataTable tempdt = pubdt.Copy();
            DataView dv = new DataView(tempdt );
            dv.RowFilter = "parentid = '" + parentRow["depid"].ToString().Trim() + "'";
            foreach (DataRowView myrow in dv )
            {
                strdepname = myrow["depname"].ToString().Trim();
                TreeNode mynode = new TreeNode(strdepname );
                parentNode.ChildNodes.Add(mynode );
                poptree(strdepname ,mynode,myrow );
            }
        }