数据库表结构为ID,NAME,PARENTID
例如:
01 福建 0
02 河北 0
020 石家庄 02
010 厦门 01

解决方案 »

  1.   

    用一个方法按规律递归,可以google一下
      

  2.   


    这是我自己写的  你自己再改改吧  protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                  //  tv.Attributes.Add("oncheck", "tree_oncheck()");
          
                    CreateTreeView();             //   SeachNode();            }
               // SeachNode();
            }        private void SeachNode()
            {            string noder = this.tv.SelectedValue;
                TreeNode node = this.tv.SelectedNode;
                if (node != null)
                {
                    if (node.Parent != null)
                    {
                        node = node.Parent;
                        node.Expanded = true;
                    }
                }
             //TreeNode node = tv.SelectedNode;
             //   if(node is null)
             //   {
             //       if(node.Parent!=null)
             //       {
             //           node = node.Parent;
             //       node.Expanded=true;
             //       }
             //   }
               
            }                private void CreateTreeView()
            {
                frmMaster.Attributes["onclick"] = "return TimeClear()";
                frmMaster.Attributes["onkeydown"] = "return TimeClear()";
                Employee employee = new Employee(ContextHelper.GetContextInfo().UserNO);
                string submenuhtml = string.Empty;
                string submenuurl = string.Empty;
                DataTable dt = Employee.Menus;
                tv.Nodes.Clear();//清空树的所有节点             DataRow[] rowList = dt.Select("parent_id=0");
                
                foreach (DataRow row in rowList)
                {
                    //增加父节点                TreeNode rootNode = new TreeNode();
                    rootNode.Text = row["menu_name"].ToString();
                    rootNode.Value = row["menu_id"].ToString();
                    rootNode.Expanded = true;
                    if (row["target_url"].ToString().Trim() != "")
                    {
                        rootNode.NavigateUrl = row["target_url"].ToString() + "?NODE=" + row["menu_id"].ToString();
                    }                else
                    {
                        rootNode.SelectAction = TreeNodeSelectAction.Expand;
                        //if (rootNode.Selected = true) 
                        //{                    //}
                        //    //if (strModID == "SYS_SYSTEM" || SysID == "SYS") 
                        rootNode.Expanded = true;
                    }
                   
                    tv.Nodes.Add(rootNode);
                    
                    //reader.Close();
                    // parent_id='" + row["menu_id"].ToString() + "'or 
                    CreateChildNode(tv, rootNode, dt, rootNode.Value.Trim());
                }
                
               
                // con.Close();
            }
            private static void CreateChildNode(TreeView treeView, TreeNode parentNode, DataTable dt, string ID)
            {
                string sql = string.Format("parent_id={0}", ID);            DataRow[] rowList = dt.Select(sql);
                ////选择数据,添加排序表达式
                //DataRow[] rowList = dt.Select("ParentID=" + Convert.ToInt32(parentNode.Value));
                foreach (DataRow row in rowList)
                {
                    //创建一个新的节点了 
                    TreeNode node = new TreeNode();
                    node.Text = row["menu_name"].ToString();
                    node.Value = row["menu_id"].ToString();
                    if (row["target_url"].ToString().Trim() != "")
                    {
                        node.NavigateUrl = row["target_url"].ToString() + "?NODE=" + row["menu_id"].ToString();
                    }
                    else
                    {
                        node.NavigateUrl = "";
                    }
                      //node.SelectAction = TreeNodeSelectAction.SelectExpand;
                    node.Expanded = false;
                    //if (treeView.SelectedValue == node.Value)
                    //{
                    //    node.Selected = true;
                    //}
                    //if (node.Selected == true) 
                    //{
                    //    parentNode.Expanded = true;
                    //}
                    parentNode.ChildNodes.Add(node);
                    //递归调用,创建其他节点 
                    CreateChildNode(treeView, node, dt, node.Value.Trim());
                }
            }
      

  3.   

    希望对你有用protected void Page_Load(object sender,EventArgs e)
    {
         if(!IsPostBack)
         {
             DataTable dtCategories = GetCategories();
             //循环遍历记录
              foreach(DataRow row in dtCategories,Rows)
             [
                TreeNode nodeCategory = new TreeNode(row["CategoryName"].toString,
                row["CategoryID"].toString();)
                //使用该节点的子节点的填充功能
                  nodeCategory.PoplateOnDemand = true;
                TreeView1.Nodes.Add(nodeCategory);
              }
          }
    }
      

  4.   

    递归绑定数据集到treeview
     TreeNode root=new TreeNode();
        root.Text="";
        this.TreeView1.Nodes.Add(root);
        this.InitTree(this.TreeView1.Nodes[0].Nodes,0,dt);
    private void InitTree(TreeNodeCollection root,string parentID,DataTable dt)
      {
       TreeNode node;
       DataRow []rows=dt.Select("ParentID="+parentID);
       foreach(DataRow row in rows)
       {
        node=new TreeNode();
        node.ID=row["ID"].ToString();
        node.Text=row["NAME"].ToString();
        root.Add(node);
        InitTree(node.Nodes,node.ID,dt);
       }
      }参考
      

  5.   

     protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {//首先填充第一级节点。
                DataView dv = db.GetDv("select * from t_bd_item_cls where cls_parent='0'");            foreach (DataRowView datav in dv)
                {    //循环数据视图,将对应的数据交给一个节点对象,然后添加到树上继续填加        
                    TreeNode tn = new TreeNode();
                    tn.Text = datav["item_clsname"].ToString();
                    tn.Value = datav["item_clsno"].ToString();
                    tn.Expanded = false;
                    TreeView1.Nodes.Add(tn);
                    AddChildNode(tn);
                }
            }
           
        }
             private void AddChildNode(TreeNode tn)
           {//填充二级节点,需要一级节点的Value,所以直接传了个TreeNode
            string  provID = Convert.ToString (tn.Value);
            DataView dv = db.GetDv("select * from t_bd_item_cls where cls_parent=" + provID + "");
            foreach (DataRowView datav in dv)
            {
                TreeNode Ctn = new TreeNode();
                Ctn.Text = datav["item_clsname"].ToString();
                Ctn.Value = datav["item_clsno"].ToString();
                Ctn.NavigateUrl = "base_item.aspx?id=" + datav["item_clsno"].ToString() + "";
                Ctn.Target = "_blank";
                tn.ChildNodes.Add(Ctn);        }    }这样列全部是数字时候没问题,但当有字母时候就报错,说该列无效。
      

  6.   

    提示无法将NVARCHAR类型转换为INT类型,期待大侠指点