自己对treeview这个东西不是很熟悉 现在碰上一个麻烦的问题
数据库的数据结构是这样的
crs_no   crs_name
01        一年级
0101      一班
0102      二班
010101    一小组
010102    二小组
02        二年级
大概就是这样的  两位一级  可以无限加现在的问题是 像我这样的数据如何绑定treeview  或者数据库需要做什么改变
由于不太了解这个控件
所以希望大家帮帮忙
急.................

解决方案 »

  1.   

    http://topic.csdn.net/u/20091229/09/14b2723e-b0eb-4b27-b6e7-71acf0bcd42f.html
    看看这个!
      

  2.   

    http://hi.baidu.com/danhanshang/blog/item/ced25882abeb3bb56c8119af.html
      

  3.   

    http://www.cnblogs.com/mushroom_lb/archive/2008/08/26/1276449.html看看这个
      

  4.   

    谁设计的 数据结构?  狗日的楼主,我帮你骂下。!
    然后说: 递归,数据需要先整理下!http://www.cnblogs.com/mushroom_lb/archive/2008/08/26/1276449.html看看这个
      

  5.   

    你这种用递归的话要坐判断,最后是改下数据库,添加个字段,让子节点和父节点关联起来,比如一年级的ID=01,一年级一班就写成ID=0101,它的FID=01,这样就好点
      

  6.   

    你可以在数据库中添加一列ParentId
    id   crs_no  crs_name  parentId
     1   01        一年级     0
     2   0101      一班       1
     3    0102      二班       1
     4    010101    一小组      2
     5    010102    二小组      2
     6    02        二年级     0
      

  7.   

    <?xml version="1.0" encoding="utf-8" ?>
    <Area>
        <Province iAreaID ="1" cAreaName="北京市"/>
        <Province iAreaID ="2" cAreaName="上海市"/>
        <Province iAreaID ="3" cAreaName="天津市"/>
        <Province iAreaID ="4" cAreaName="重庆市"/>
        <Province iAreaID ="5" cAreaName="湖北省">
            <City iAreaID ="51" cAreaName="武汉市"/>
            <City iAreaID ="52" cAreaName="黄冈市" />
            <City iAreaID ="53" cAreaName="荆州市"/>
            <City iAreaID ="54" cAreaName="武穴市" />
            <City iAreaID ="55" cAreaName="十堰市"/>
            <City iAreaID ="56" cAreaName="黄石市" />
        </Province>
        <Province iAreaID ="6" cAreaName="河北省">
            <City iAreaID ="61" cAreaName="石家庄市"/>
            <City iAreaID ="62" cAreaName="唐山市" />
        </Province>
        <Province iAreaID ="7" cAreaName="山西省">
            <City iAreaID ="71" cAreaName="太原市" />
            <City iAreaID ="72" cAreaName="大同市" />
        </Province>
    </Area>
    --------------------------------------------------------------------------------
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Xml;
    using System.Xml.XPath;
    namespace BBSweb.TreeView
    {
        public partial class TreeView : System.Web.UI.Page
        {
            private XmlDocument xmlDoc;
            protected void Page_Load(object sender, EventArgs e)
            {
                if (Page.IsPostBack == false)
                {
                    MakeParentNode(); 
                
                }
            }
            public void MakeParentNode()
            {
                this.treeAreaList.Nodes.Clear();
                xmlDoc = new XmlDocument();
                xmlDoc.Load(Server.MapPath("area.xml"));
                XmlNodeList nodeList = xmlDoc.SelectSingleNode("Area").ChildNodes;//获取Area节点下的所有子结点  
                //定义Area结点  
                TreeNode topNode = new TreeNode();//定义顶级节点 
                topNode.Text = "area ";
                //  tn.Value = "-1";  
                topNode.Expanded = true;
                treeAreaList.Nodes.Add(topNode);//添加"区域"父结点  
                XmlElement element = null;
                TreeNode treeNode = null;
                //遍历区域下的所有省和直辖市  
                foreach (XmlNode node in nodeList)
                {
                    element = (XmlElement)node;
                    treeNode = new TreeNode();
                    treeNode.Text = element.GetAttribute("cAreaName");//在树控件上显示省或直辖市的名称  
                    treeNode.Value = element.GetAttribute("iAreaID");//获取节点值 
                    treeNode.Expanded = true;
                    topNode.ChildNodes.Add(treeNode);//将省或直辖市级结点添加到顶级节点中  
                    MakeChildNode(node.ChildNodes, treeNode);//通过递归将所有子节点添加到节点集合中             }
              
            }
            protected void MakeChildNode(XmlNodeList nodeList, TreeNode treeNode) 
           { 
             XmlElement element = null; 
             TreeNode subTreeNode = null; 
             //遍历省级节点下的所有市,市辖区  
             foreach (XmlNode node in nodeList) 
             { 
                element = (XmlElement)node; 
                subTreeNode = new TreeNode(); 
                subTreeNode.Text = element.GetAttribute("cAreaName");//在树控件上显示市或市辖区的名称  
                subTreeNode.Value = element.GetAttribute("iAreaID");//这里设置节点Value 
                subTreeNode.Expanded = true; 
                treeNode.ChildNodes.Add(subTreeNode);//将子结点添加到父结点下面  
                MakeChildNode(node.ChildNodes, subTreeNode);//递归调用本方法 
            } 
           }
             
            protected void Tree_SelectedNodeChanged(object sender, EventArgs e)
            {
                //当节点变化时
                Response.Write("节点的值:" + treeAreaList.SelectedNode.Value + "<br/>");
                Response.Write("节点的路径:" + treeAreaList.SelectedNode.ValuePath + "<br/>");
                Response.Write("节点的数据路径:" + treeAreaList.SelectedNode.DataPath + "<br/>");         }
        }
    }
      

  8.   

    看这个完整的代码 并带有说明
    http://developer.51cto.com/art/200909/149263.htm
      

  9.   

    这个可以:C#递归树实现实例:从父结点加字节点,注释的是把字节点向父结点上加//将数据填充到dataTable  DataTable mytable = new DataTable();  //构建表结构  DataRow myRow;  DataColumn Id = new DataColumn("Id", typeof(System.Int32));  mytable.Columns.Add(Id);  DataColumn Name = new DataColumn("Name", typeof(System.String));  mytable.Columns.Add(Name);  DataColumn ParentId = new DataColumn("ParentId", typeof(System.Int32));  mytable.Columns.Add(ParentId);  DataColumn SiteInfo = new DataColumn("SiteInfo", typeof(SiteInfo));  mytable.Columns.Add(SiteInfo);  //填充数据  //注意i是从1开始的,因为数据库收条没有意义,  //数据库首条记录id为0,会引起死循环  for (int i = 1; i <= cata.Length - 1; i++)  {   myRow = mytable.NewRow();   myRow["Id"] = cata[i].Id;   myRow["Name"] = cata[i].Name;   myRow["ParentId"] = cata[i].ParentId;   myRow["SiteInfo"] = cata[i].SiteInfo;    mytable.Rows.Add(myRow);  }    this.InitTree(newNode.ChildNodes, 0, mytable);       //Hashtable ht = new Hashtable();   //for (int i = 1; i < cata.Length; i++)  //{  // ht.Add(cata[i].Id, cata[i]);  //}    //Hashtable allTreeNodes = new Hashtable();  //Hashtable parentNodes = new Hashtable();  ////遍历树节点描述并拟向生成树结构  //foreach (DictionaryEntry dict in ht)  //{  // CatalogInfo treeobj = (CatalogInfo)dict.Value;  // if (allTreeNodes.Contains(treeobj.Id))  //  continue;  // TreeNode tn = new TreeNode();  // tn.Text = treeobj.Name;  // tn.Value = treeobj.Id.ToString();  // tn.NavigateUrl = "main_right.aspx?catalogid=" + tn.Value;  // tn.Target = "WorkArea";  // generateParentTreeFromNode(  tn, (CatalogInfo)treeobj, ht, parentNodes, allTreeNodes);  //}   ////将所有根节点放到treeview上  //foreach (DictionaryEntry dict in parentNodes)  //{  // newNode.ChildNodes.Add((TreeNode)dict.Value);  //}    }  }   private void InitTree(TreeNodeCollection Nds,   int parentID, DataTable dt)//递归初始化树   {    TreeNode tmpNd;    //递归寻找子节点    DataRow[] rows = dt.Select("ParentID=" + parentID);    foreach (DataRow row in rows)    {  tmpNd = new TreeNode();  tmpNd.Value = row["Id"].ToString();  tmpNd.Text = row["Name"].ToString();  tmpNd.NavigateUrl = "main_right.aspx?catalogid=" + row["Id"].ToString() + "&catalogName=  " +Server.UrlEncode(row["Name"].ToString());  tmpNd.Target = "WorkArea";  Nds.Add(tmpNd);   InitTree(tmpNd.ChildNodes, Convert.ToInt32(tmpNd.Value), dt);    }   }