一直没太搞懂TreeView,请帮忙写一个例子好吗?要求:
数据结构  
         系统编号 分类序号 主分类编号 上级分类编号             分类名称
           1         2        001       000(主分类上级是000)   a
           2         1        002       000                      b
           3         1      001001      001                      aa
           4         2      002001      002                      ba
           5         1      002001001   002001                   baa

解决方案 »

  1.   

    http://www.cnblogs.com/blusehuang/archive/2007/05/15/747461.html
      

  2.   

    a(001)
    |__aa(001001)
    b(002)
    |__ba(002001)
       |__baa(002001001)AJAX实现的TreeView,可以参考下
    http://www.cnblogs.com/doll-net/archive/2007/05/16/749282.html
      

  3.   

    SQL Server 2005 中的递归查询!
      

  4.   

    我给你说一种方法,我不会用递归,也不太喜欢,因为逻辑结构太乱了点。
    比如说有这样一个彩旦:
    ---河南
        ---洛阳
        ---郑州
        ---开封
    ---四川
        ---成都
        ---汉中
    ---
    你可以做成两个表
    一个表是province  一个表是city 
    字段 province 里面 Pid  title
         city 里面  cid Pid title
    两个表里面的pid在数据库里面加上FK
    代码如下:
     protected void Page_Load(object sender, EventArgs e)
         {
             if (!Page.IsPostBack)
             {
                 //首先填充第一级节点
                 DataView dv = drv("select * from province");//drv是个函数
                 foreach (DataRowView datav in dv)
                 {
                     //循环视图,将对应的值交给一个节点对象,然后添加到树上有继续添加
                     TreeNode tn = new TreeNode();
                     tn.Text = datav["title"].ToString();
                     tn.Value = datav["pid"].ToString();
                     TreeView1.Nodes.Add(tn);
                     AddchildNodes(tn);//调用方法填充二级节点
                
                 }
            
             }
         }
         private void AddchildNodes(TreeNode tn)
         {//填充二级节点,他需要一级节点的value,所以干脆送一个完整的根节点对象
             int pid = Convert.ToInt32(tn.Value);
             DataView dv = drv("select * from city where pid="+bid+"");
             foreach (DataRowView datav in dv)//这里注意是DATAROWVIEW不是DATAVIEW
             {//同上
                 TreeNode ctn = new TreeNode();
                 ctn.Text = datav["title"].ToString();
                 ctn.Value = datav["cid"].ToString();
                 ctn.NavigateUrl = "http://www.163.com/jiashe.aspx?aa=" + datav["cid"].ToString();
                 tn.ChildNodes.Add(ctn);
            
             }
        
         }
         private DataView drv(string query)
         {//根据传来的SQL串返回一个视图
             //
             SqlConnection myConnection = new SqlConnection("server=.;uid=sa;pwd=123;database=数据库名字");
             SqlDataAdapter sda = new SqlDataAdapter(query,myConnection);
             DataSet ds = new DataSet();
             sda.Fill(ds,"tree");
             return ds.Tables["tree"].DefaultView;   
        
         }
      

  5.   

    用递归啊,
    首先填充一个dateset,将所有菜单数据填入,(‘select 主分类编号,上级分类编号,分类名称 from memu_define')sub create_tree(byval menuData,as Dataset,byval menuFather_ID as Integer,byVal FatherNode as TreeNode)
    dim filterStr as String
    filterStr="上级分类编号="+cstr(menuFather_ID)
    dim subMenu() as DataRow
    subMenu=menuData.tables(0).select(filterStr)
    dim i as integer
    for i=0 to subMenu.GetUpperBound()
      dim menuNode as TreeNode=new TreeNode()
      menuNode.text=subMenu(i)(3).ToString
      if menuFather_ID=0 then
        treeview1.nodes.add(menuNode)
      else
        FatherNode.ChildNodes.Add(menuNode)
      end if
      create_tree(menuData,subMenu(i)(0),menuNode)
    nextend sub用create_tree(menuData,0,null)调用