表  :
 productnameid   parent_id  productname
 1               0          电器
 2               0          家具
 3               1          电视
 4               2          桌子      用asp.net 动态显示出树

解决方案 »

  1.   

    2.0自带treeview控件,直接绑定就可以了,如果是1.1可能麻烦点..
      

  2.   

    这个是asp2.0的
    private void _BindTree()
    {
    if(this.TreeView1.Nodes.Count>0)
    this.TreeView1.Nodes.Clear();
                
                DataTable dt =  //这里查询数据
           DataRow[] rows = dt.Select("Parent_ID = 0");
    for(int i=0;i<rows.Length;i++)
    {
                    TreeNode node = new TreeNode();
                    node.Text = rows[i]["productname"].ToString()
    node.ImageUrl ="../images/house.ico";
    node.Value =   rows[i]["productnameid"].ToString();
                    
    this.TreeView1.Nodes.Add(node);
    this.AddChildNodes(ref dt, ref node);
    }   this.TreeView1.DataBind(); }        private void AddChildNodes(ref DataTable dt,  ref TreeNode node)
    {
    DataRow[] rows = dt.Select("Parent_ID="+ node.Value);
    for(int i=0;i<rows.Length;i++)
    {
        TreeNode   NewNode = new TreeNode();
                    NewNode.Text =  rows[i]["productname"].ToString()
    NewNode.ImageUrl ="../images/house.ico";
     
    NewNode.Value = rows[i]["productnameid"].ToString();
    this.AddChildNodes(ref dt,ref NewNode);
    node.ChildNodes.Add(NewNode);

    }           
                 }
      

  3.   

    如果是1.1可用微软的webcontorls.基本一样.有几个属性不同.
      

  4.   

    从数据库动态加载数据是TreeView服务器控件C#:
    <%@ Page Language="C#" %>
    <script runat="server">
      protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
      {
        TreeNode newNode;
        if (e.Node == null)
        {
          newNode = new TreeNode();
          newNode.Value = "0";
          newNode.Text = "开始站点";
          newNode.PopulateOnDemand = true;
          newNode.SelectAction = TreeNodeSelectAction.Expand;
          TreeView1.Nodes.Add(newNode);    }
        else
        {
          string sql = "select * from Data Where pid=" + e.Node.Value;
          System.Data.OleDb.OleDbConnection cn = new System.Data.OleDb.OleDbConnection();
          cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" 
            + Server.MapPath("~/") + @"\App_Data\tree.mdb;Persist Security Info=True";
          cn.Open();
          System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(sql, cn);      System.Data.OleDb.OleDbDataReader dr = cmd.ExecuteReader();
          while (dr.Read())
          {
            newNode = new TreeNode();
            newNode.Text = dr["Title"].ToString();
            newNode.Value = dr["id"].ToString();
            newNode.NavigateUrl = dr["href"].ToString();
            //设置PopulateOnDemand为true,确保下面的子节点仍然可以动态生成。
            newNode.PopulateOnDemand = true;
            newNode.SelectAction = TreeNodeSelectAction.Expand;
            e.Node.ChildNodes.Add(newNode);
          }
          dr.Close();
          dr.Dispose();
          cmd.Dispose();
          cn.Close();
          cn.Dispose();
          cn = null;
        }
      }  protected void Page_Load(object sender, EventArgs e)
      {
        if (!this.IsPostBack)
        {
          TreeNode newNode;
          newNode = new TreeNode();
          newNode.Value = "0";
          newNode.Text = "【孟子E章】站点";
          newNode.PopulateOnDemand = true;
          newNode.SelectAction = TreeNodeSelectAction.Expand;
          TreeView1.Nodes.Add(newNode);
        }
      }
    </script><html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
      <title>TreeView 服务器控件从数据库加载数据</title>
    </head>
    <body>
      <form id="form1" runat="server">
        <asp:TreeView ID="TreeView1" runat="server" ShowLines="true"
          OnTreeNodePopulate="TreeView1_TreeNodePopulate">
        </asp:TreeView>
      </form>
    </body>
    </html>
    VB.NET:
    <%@ Page Language="VB" %>
    <script runat="server">
    Protected Sub TreeView1_TreeNodePopulate(ByVal sender As Object, ByVal e As TreeNodeEventArgs) 
     Dim newNode As TreeNode 
     If e.Node Is Nothing Then 
       newNode = New TreeNode 
       newNode.Value = "0" 
       newNode.Text = "开始站点" 
       newNode.PopulateOnDemand = True 
       newNode.SelectAction = TreeNodeSelectAction.Expand 
       TreeView1.Nodes.Add(newNode) 
     Else 
       Dim sql As String = "select * from Data Where pid=" + e.Node.Value 
       Dim cn As System.Data.OleDb.OleDbConnection = New System.Data.OleDb.OleDbConnection 
          cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
           + Server.MapPath("~/") + "\App_Data\tree.mdb;Persist Security Info=True"
       cn.Open 
       Dim cmd As System.Data.OleDb.OleDbCommand = New System.Data.OleDb.OleDbCommand(sql, cn) 
       Dim dr As System.Data.OleDb.OleDbDataReader = cmd.ExecuteReader 
       While dr.Read 
         newNode = New TreeNode 
         newNode.Text = dr("Title").ToString 
         newNode.Value = dr("id").ToString 
         newNode.NavigateUrl = dr("href").ToString 
         newNode.PopulateOnDemand = True 
         newNode.SelectAction = TreeNodeSelectAction.Expand 
         e.Node.ChildNodes.Add(newNode) 
       End While 
       dr.Close 
       dr.Dispose 
       cmd.Dispose 
       cn.Close 
       cn.Dispose 
       cn = Nothing 
     End If 
    End Sub Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) 
     If Not Me.IsPostBack Then 
       Dim newNode As TreeNode 
       newNode = New TreeNode 
       newNode.Value = "0" 
       newNode.Text = "【孟子E章】站点" 
       newNode.PopulateOnDemand = True 
       newNode.SelectAction = TreeNodeSelectAction.Expand 
       TreeView1.Nodes.Add(newNode) 
     End If 
    End Sub
    </script>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
      <title>TreeView 服务器控件从数据库加载数据</title>
    </head>
    <body>
      <form id="form1" runat="server">
        <asp:TreeView ID="TreeView1" runat="server" ShowLines="true"
          OnTreeNodePopulate="TreeView1_TreeNodePopulate">
        </asp:TreeView>
      </form>
    </body>
    </html>