ID                  Name
1            
11
1101
1102
1103
12
1201
1202
1203
1204
13
1301
1302
1303
2
21
2102
2105
22
2211
2213
222
2221
223
2231
2232
请问下 这样的树怎么实现阿, 数据库表就一个ID 跟 名字????  小弟不才,希望大侠们能有实例代码最好.

解决方案 »

  1.   

    截取ID 递归。
    或者这种
    要好一些private void InitTree(TreeNodeCollection Nds,int parentid)
            {
                DataView dv = new DataView();
                TreeNode tmpNd = null;
                dv.Table = ds.Tables[0];
                dv.RowFilter = String.Format("parentid={0}", parentid);
                foreach (DataRowView drv in dv)
                {
                    tmpNd = new TreeNode();
                    tmpNd.Text = (string)drv["sortname"];//节点名称
                    tmpNd.NavigateUrl = String.Format("?id={0}", drv["id"]);//节点URL
                    //tmpNd.ImageUrl = ""; //节点图片
                    if (parentid == 0)
                        tmpNd.Expanded = true;
                    else
                        tmpNd.Expanded = false;
                    Nds.Add(tmpNd);
                    InitTree(Nds[Nds.Count - 1].ChildNodes, (int)drv["id"]);
                }
            }
    参考
      

  2.   

    ID是不同的, 同级的ID都不是一样的.
      

  3.   

    我知道!
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Drawing;
    using System.Windows;public partial class TreeView : System.Web.UI.Page
    {
        public List<ModelTree> TreeList = null;
        protected void Page_Load(object sender, EventArgs e)
        {
            
            if (Session["TreeData"] == null)
            {
                TreeList = new List<ModelTree>(){  
              new ModelTree(){TId="0001",TName="董事会",IsParent=1 },
              new ModelTree(){TId="0002",TName="监事会",IsParent=1 },
              new ModelTree(){TId="0003",TName="工会",IsParent=1 },
              new ModelTree(){TId="000101",TName="生产科",IsParent=0 },
              new ModelTree(){TId="000102",TName="地质科",IsParent=0 },
              new ModelTree(){TId="000201",TName="测量科",IsParent=0 },
              new ModelTree(){TId="000301",TName="工会干事科",IsParent=0 }
            };
                Session["TreeData"] = TreeList;
            }
            else
            {
                TreeList = Session["TreeData"] as List<ModelTree>;
            }
            this.Tv1.Nodes.Clear();
            this.Tv1.Nodes.Add(new TreeNode() { Text = "总部门" });
            InitTree(TreeList, "000", this.Tv1.Nodes[0]);    }
        int count = 0;
        public void InitTree(List<ModelTree> list, string ParentId, TreeNode Ptn)
        {
            List<ModelTree> lmt = new List<ModelTree>();
            lmt = list.Where(N => N.TId.ToString().Contains(ParentId.ToString()) && N.TId != ParentId).ToList();
            if (count == 0)
            {
                lmt = lmt.Where(I => I.IsParent == 1).ToList();
            }
            if (lmt.Count > 0)
            {
                count++;
                foreach (ModelTree mt in lmt)
                {
                    TreeNode Tn = new TreeNode();
                    Tn.Text = mt.TName + "&nbsp;&nbsp;&nbsp;&nbsp;<a href='NodeAdd.aspx?Type=add&TID=" + mt.TId.ToString() + "\'><font color='red'>添加节点</font></a>"
                        + "&nbsp;&nbsp;&nbsp;&nbsp;<a href='NodeAdd.aspx?Type=upd&TID=" + mt.TId.ToString() + "\'><font color='black'>更新节点</font></a>";
                    Tn.Value = mt.TId.ToString();
                    Ptn.ChildNodes.Add(Tn);
                    InitTree(list, mt.TId.ToString(), Tn);
                }
            }
        }
    }简单的DEMO