日期:2014-05-18  浏览次数:20981 次

急求如何把一个树形结构的数据库记录绑定到TreeView控件中
比如说我的数据库TB_myBM表中有这么几个字段  
  id(int自动增长的) name(varchar)  
  1 部门 001  
  2 技术部 001001  
  3 市场部 001002  
  4 技术1部 001001001  
  5 技术2部 001001002  
  6 技术3部 001001003  
  7 市场1部 001002001  
  8 市场2部 001002002  
  9 市场3部 001002003  
  10 技术1部1小分部 001001001001
  11 技术1部2小分部 001001001002
   
   
怎么用treeview递归树形绑定达到下面的效果:  
部门  
  技术部  
  技术1部
  技术1部1小分部
  技术1部2小分部
  技术2部  
  技术3部  
  市场部  
  市场1部  
  市场2部  
  市场3部  

麻烦各位说清楚点带上后台代码,在此谢谢

------解决方案--------------------
C# code

/// <summary>
        /// 添加树
        /// </summary>
        /// <param name="ParentID"></param>
        /// <param name="pNode"></param>
        protected void AddTree(string ParentID, TreeNode pNode)
        {
            string FuncCode = string.Empty;
            string FuncName = string.Empty;
            string FuncURL = string.Empty;
            string FuncTarget = string.Empty;
            string nSonCount = string.Empty;


            DataView Dv = new DataView(m_Dt);
            Dv.RowFilter = " SubString(FuncCode,1,Len(FuncCode)-2) = '" + ParentID + "'";
            
            foreach (DataRowView Row in Dv)
            {
                FuncCode = Row["FuncCode"].ToString();
                FuncName = Row["FuncName"].ToString();
                FuncURL = Row["FuncURL"].ToString();// 
                FuncTarget = this.m_FuncTarget;
                nSonCount = Row["nSonCount"].ToString();


                TreeNode Node = new TreeNode();
                Node.SelectAction = TreeNodeSelectAction.Expand;
                 if (FuncURL.IndexOf("?") < 3) FuncURL = FuncURL + "?1=1";
                        FuncURL = FuncURL + "&FuncCode=" + FuncCode + "&FuncName=" + Server.UrlEncode(FuncName);
                        Node.Target = FuncTarget;
                        Node.NavigateUrl = FuncURL;

                if (pNode == null)
                {
                    Node.Text = FuncName;
                    TreeView1.Nodes.Add(Node);

                    if (int.Parse(nSonCount) > 0) AddTree(FuncCode, Node);
                }
                else
                {
                    Node.Text = FuncName;
                    pNode.ChildNodes.Add(Node);
                    if (int.Parse(nSonCount) > 0) AddTree(FuncCode, Node);
                }
            }
            Dv = null;
        }