利用TreeView控件生成树状导航的示例

来源:互联网 发布:asics一条街 淘宝店 编辑:程序博客网 时间:2024/05/29 05:56
 树型结构表Para_Item  
  Item_ID(节点ID)       Item_Name(节点名)       Parent_ID(父结点ID)  
                              1                                                     All                                                                   0  
                              2                                                   aaa                                                               1  
                              3                                                   bbb                                                               1  
                              4                                                   aaa_1                                                       2  
                              5                                                   bbb_1                                                       3                                  
     
  //页面初始化  
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  //   定义数据库连接  
  SqlConnection   sqlConection_Tree   =   new   SqlConnection();  
  //初始化连接字符串  
  sqlConection_Tree.ConnectionString=   Session["ConnString"].ToString();  
  //打开连接  
  sqlConection_Tree.Open();  
     
  //获取树形目录节点  
  SqlDataAdapter   sqlDataAdapter_Tree   =   new   SqlDataAdapter("select   Item_id,Item_name,Parent_ID   from   Para_item",sqlConection_Tree);  
  DataSet   DataSet_Tree=new   DataSet();  
  sqlDataAdapter_Tree.Fill(DataSet_Tree);  
  this.ViewState["DataSet_Tree"]=DataSet_Tree;    
   
  //调用递归函数,完成树形结构的生成  
  AddTree(0,   (TreeNode)null);  
  }  
   
   
  //递归添加树的节点   参数ParentID为树的最大父结点  
  public   void   AddTree(int   ParentID,TreeNode   pNode)    
  {  
      DataSet   DataSet_Tree=(DataSet)   this.ViewState["DataSet_Tree"];    
      DataView   DataView_Tree   =   new   DataView(DataSet_Tree.Tables[0]);  
      //过滤ParentID,得到当前的所有子节点   ParentID为父节点ID  
      DataView_Tree.RowFilter   =     "[Parent_ID]   =   "   +   ParentID;  
       
      //循环递归  
      foreach(DataRowView   Row   in   DataView_Tree)    
      {  
          //声明节点  
          TreeNode   Node=new   TreeNode()   ;  
          //绑定超级链接  
          Node.NavigateUrl   =   "List.aspx?Item_ID="+Row["Item_ID"].ToString();  
          //开始递归  
          if(pNode   ==   null)    
          {  
              //添加根节点  
              Node.Text   =   Row["item_name"].ToString();  
              TreeView_Tree.Nodes.Add(Node);  
              Node.Expanded=true;   //节点状态展开  
              AddTree(Int32.Parse(Row["item_id"].ToString()),   Node);         //再次递归  
          }    
          else    
          {        
              //添加当前节点的子节点  
              Node.Text   =   Row["item_name"].ToString();  
              pNode.Nodes.Add(Node);  
              Node.Expanded   =   true;   //节点状态展开  
              AddTree(Int32.Parse(Row["item_id"].ToString()),Node);           //再次递归  
          }  
      }  
      //关闭连接  
      sqlConection_Tree.Close();  
  }  
   
  生成的树型如下:  
  All  
  |-aaa  
        |-aaa_1  
  |-bbb  
        |-bbb_1
原创粉丝点击