想用TreeView显示如下:   
    
  -中国   
    ----北京   
    --------XXX区   
    ----上海   
数据库为一张表,怎么设计,还就是怎么邦定treeview数据

解决方案 »

  1.   

    TreeNode TreeView5.Controls.Add()
      

  2.   

    ????????表的设计和三级节点邦定treeview
      

  3.   

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;public partial class tree : System.Web.UI.Page
    {
        WebService wb = new WebService();
        DataTable dt;
        string strsql;
        TreeNode newNode;
          protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                RootNodeAdd();        }
        }
            public void RootNodeAdd()
        {
            strsql ="select NodeID,NodeName,ParentID,NodeLevel from TreeView2 where ParentId=0";
            dt=wb.ExcuteSelect (strsql );        for (int i = 0; i < dt.Rows.Count; i++)
            {
                newNode = new TreeNode(dt.Rows[i][dt.Columns[1]].ToString());
                TreeView1.Nodes.Add(newNode);            ChildNodeAdd(i, dt.Rows[i][dt.Columns[0]].ToString (), newNode);
               
            }    }
        //RootNodeID根节点序号,未用
        //ParentNodeID根节点ID号
        public void ChildNodeAdd(int RootNodeID,string  ParentNodeID,TreeNode tn)
        {
            
            if (tn.ChildNodes != null)
            {
                DataTable dt1;
                string strsql1;
                strsql1 = "select NodeID,NodeName,ParentID,NodeLevel from TreeView2 where ParentId='" + ParentNodeID + "'";
                dt1 = wb.ExcuteSelect(strsql1);
                for (int j = 0; j < dt1.Rows.Count; j++)
                {
                    TreeNode newNode1;
                    newNode1 = new TreeNode(dt1.Rows [j][dt1.Columns [1]].ToString ());                //TreeView1.Nodes[RootNodeID].ChildNodes.Add(newNode1);
                 
                    tn.ChildNodes.Add(newNode1);
                    ChildNodeAdd(j, dt1.Rows[j][dt1.Columns[0]].ToString (), newNode1);    //递归遍历数据库增加下一级子节点
                }
            }   
        }
        protected void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e)
        {        //TreeNode tnn = new TreeNode();  //当前节点
            //tnn = this.TreeView1.SelectedNode;
            //string tt = tnn.Text;
            //strsql = "select NodeID from TreeView2 where NodeName='" + tt + "' ";
            //dt = wb.ExcuteSelect(strsql);
            //ChildNodeAdd(1, (int)dt.Rows[0][dt.Columns[0]], tnn);
        }
    }我这个是 从数据库中读取节点,理论上可以添加无限级,但是我加到1w级时就司机了。哈哈。数据库设计:NodeID  varchar(18),NodeName varchar(18),NodeLevel varchar(18),ParentID varchar(18)