TreeView 里面的层层数据是连接数据库,每个接点是数据库表里面的数据
TreeView 是Microsoft.Web.UI.WebControls 里面的控件
数据库 表结构是:里面有ID  FatherID   NodeName 
需要用TreeView 显示NodeName里面的数据

解决方案 »

  1.   

    reeView是一个重要的控件,无论是在VB.NET,C# 还是VB、Delphi等各种语言中,都充当了导航器的作用。在实际工作中,很多情况下需要将TreeView与数据库进行连接,以填充其节点。在Windows Form和Web Form中,我们可以用TreeView来显示树形结构,如显示目录树、显示地区、分类显示商品等。可以说,在大部分软件的开发中,TreeView都是一个不可缺少的展示控件。因此,树形结构的设计就成了软件开发人员一个永恒的话题。
    树形结构的展示方式
    树形结构的展示一般来讲有三种方式:
    1.界面设计时在TreeView设计器或者代码中直接填充TreeView控件。
    2.从XML文件中建立树形结构。
    3.从数据库中得到数据,建立树形结构。
    第一种方式是最简单的,这种方式主要用于树形结构一般没有变化的应用程序,在设计时就固定一颗树。当然,在设计时固定了树的结构,以后要想修改、增加、删除树的节点,就必须修改源程序。所有不利于扩展。
    第二种方式从XML文件中提取,由于XML本身就是树形结构的,微软提供的文档对象模型DOM 可以方便的读取、操作和修改 XML 文档。在.NET中,应用System.Xml类可以方便地将XML文件加载到TreeView控件中,微软的MSDN也提供了实例,此处就不再多说。
    第三种方式,树形结构的数据,从数据库中获得。一般来讲,我们的应用程序多数是基于数据库的。采用这种方式,增加、修改、删除一颗树的节点很方便,只要操作数据库中的数据就可以了。而且,这种方式可以和数据库中的其它表做关联、查询和汇总,通过设计视图或存储过程,很容易查询出你想要的相关数据。下面,我们主要讨论这种方式的设计和实现。数据库设计首先,我们在SQL SERVER 2000里建立一个表tbTree,表的结构设计如下:
    列名 数据类型 描述 长度 主键
    ID Int 节点编号 4 是
    ParentID Int 父节点编号 4
    ConText Nvarchar 我们要显示的节点内容 50 在SQL SERVER 2000中建表的脚本:
     
    CREATE TABLE [dbo].[tbTree] (
    [ID] [int] IDENTITY (1, 1) NOT NULL ,
    [Context] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [ParentID] [int] NULL 
    ) ON [PRIMARY]在表中添加如下记录: 
    SET IDENTITY_INSERT tbtree ON
    insert tbtree (ID,Context,ParentID)  values ( 1,'中国',0)
    insert tbtree (ID,Context,ParentID)  values ( 2,'北京',11)
    insert tbtree (ID,Context,ParentID)  values ( 3,'天津',11)
    insert tbtree (ID,Context,ParentID)  values ( 4,'河北省',1)
    insert tbtree (ID,Context,ParentID)  values ( 5,'广东省',1)
    insert tbtree (ID,Context,ParentID)  values ( 6,'广州',5)
    insert tbtree (ID,Context,ParentID)  values ( 7,'四川省',1)
    insert tbtree (ID,Context,ParentID)  values ( 8,'成都',7)
    insert tbtree (ID,Context,ParentID)  values ( 9,'深圳',5)
    insert tbtree (ID,Context,ParentID)  values ( 10,'石家庄',4)
    insert tbtree (ID,Context,ParentID)  values ( 11,'辽宁省',1)
    insert tbtree (ID,Context,ParentID)  values ( 12,'大连',11)
    insert tbtree (ID,Context,ParentID)  values ( 13,'上海',1)
    insert tbtree (ID,Context,ParentID)  values ( 14,'天河软件园',6)
    insert tbtree (ID,Context,ParentID)  values ( 15,'汕头',5)
    SET IDENTITY_INSERT tbtree off
    http://msdn.microsoft.com/downloads/samples/internet/ASP_DOT_NET_ServerControls/WebControls/default.asp
    安装后,通过“自定义工具箱”->“.net框架组件”把TreeView添加到工具箱里。
    新建一个项目,选择Visual Basic.Net 工程Asp.net Web应用程序,在页面上拖画一个TreeView控件。
      

  2.   

    http://blog.csdn.net/lihonggen0/archive/2004/05/17/13654.aspx
      

  3.   

    回复人: skytear() ( )
    你好
    你说的第一步我已经完成,但是如何把数据表里面的内容添加到TreeView 里面??
      

  4.   

    Html页:
     
    <%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls, Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
    <%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="Tree.WebForm1"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <title>WebForm1</title>
    <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.0">
    <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <FONT face="宋体">
    <iewc:TreeView id="TreeView1" style="Z-INDEX: 101; LEFT: 39px; TOP: 68px" runat="server"></iewc:TreeView></FONT>
    </form>
    </body>
    </HTML>
    后台代码: 
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim ds As New DataSet()
            Dim CN As New SqlConnection()
            Try
                '初始化连接字符串
                CN.ConnectionString = 
                "data source=pmserver;initial catalog=Bench;persist security info=False;user id=sa;Password=sa;"
                CN.Open()
                Dim adp As SqlDataAdapter = New SqlDataAdapter("select * from tbTree", CN)
                adp.Fill(ds)
                Me.ViewState("ds") = ds
            Catch ex As Exception
    #If DEBUG Then
                Session("Error") = ex.ToString()
                Response.Redirect("error.aspx")        '&#768;跳转程序的公共错误处理页面
    #End If
            Finally
                '关闭连接
                CN.Close()
            End Try
            '调用递归函数,完成树形结构的生成
            AddTree(0, Nothing)
        End Sub    '递归添加树的节点
        Private Sub AddTree(ByVal ParentID As Integer, ByVal pNode As TreeNode)
            Dim ds As DataSet
            ds = Me.ViewState("ds")
            Dim dvTree As New DataView()
            dvTree = New DataView(ds.Tables(0))
            '过滤ParentID,得到当前的所有子节点
            dvTree.RowFilter = "PARENTID = " + ParentID.ToString        Dim Row As DataRowView
            For Each Row In dvTree
                Dim Node As New TreeNode()
                If pNode Is Nothing Then  '判断是否根节点
                    '添加根节点
                    Node.Text = Row("ConText").ToString()
                    TreeView1.Nodes.Add(Node)
                    Node.Expanded = True
                    '再次递归
                    AddTree(Int32.Parse(Row("ID").ToString()), Node)
                Else
                    '&#768;添加当前节点的子节点
                    Node.Text = Row("ConText").ToString()
                    pNode.Nodes.Add(Node)
                    Node.Expanded = True
                    '再次递归
                    AddTree(Int32.Parse(Row("ID").ToString()), Node)
                End If
            Next
        End Sub
      

  5.   

    更具体的看看这个
    http://www.microsoft.com/china/community/Column/30.mspx
      

  6.   

    总结了一下用MS的TREE控件的心得,大家一起来分享,当然,也不乏有其他网友的一些好的见解被录入其中,另有遗漏处请大家不吝赐教!相信只要你仔细阅读了这篇小菜文,并参考一下提供的例程,一定能够掌握TREE的基本用法!1.工欲善其事,必先利其器。首先保证装好你的组件,这个包安装非常方便,只要运行一下即可在VS.NET的工具栏中找到并使用了:
    http://218.56.11.178:8018/FileDown.aspx?FID=4
    也可以关注一下官方站是否有新版发布:
    http://msdn.microsoft.com/downloads/samples/internet/default.asp?url=/Downloads/samples/Internet/ASP_DOT_NET_ServerControls/WebControls/default.asp2.常用的几个属性和方法
    ~Index 获取树节点在树节点集合中的位置。
    ~Nodes 获取分配给树视图控件的树节点集合。
    ~Parent  获取或设置控件的父容器。
    ~SelectedNode 获取或设置当前在树视图控件中选定的树节点。
    ~ExpandAll 展开所有树节点。
    ~Checked 获取或设置一个值,用以指示树节点是否处于选中状态。
    ~Text 获取或设置在树节点标签中显示的文本。
    ~Expand 展开树节点。
    ~Clear 清空树
    ~Remove 从树视图控件中移除当前树节点。
    以上由其他网友总结,补充:
    ~Height 控件的高度
    ~Width 控件的宽度
    ~BackColor 背景颜色
    ~BorderColor 边框颜色
    ~BorderStyle 边框样式
    ~BorderWidth 边框宽度
    ~CssClass 应用于该控件的CSS类名
    ~ExpandedImageUrl 展开时显示的节点图标
    ~ImageUrl 未选择或展开是显示的节点图标
    ~SelectedImageUrl 选中状态下显示的节点图标
    ~Indent 缩进距离,只有在ShowLines设为TRUE时才生效。
    ~ShowLines 是否显示层级连接线
    ~ShowPlus 是否显示+/-符号按钮
    ~ShowToolTip 在有父节点上显示工具提示(+/-号的使用展开/关闭)。
    ~AccseeKey 控件使用的键盘快捷键
    ~AutoSelect 为TRUE时,当用键盘移动节点时,自动选择新节点
    ~AutoPostBack 当改变状态时,自动回存
    ~Enabled 控制控件的启用状态
    ~EnableViewState 控件是否自动保存其状态以用于往返行程
    ~ExpandLevel 初始化控件是展开节点的层数
    ~SelectExpands 当选中一个接点时,是否自动展开该节点
    ~TabIndex TAB键次序
    ~Visible 控件是否可见3.实用技巧:
    1)怎样点击文字(不是+/-号)即可展开(收缩)子节点
    将TREE的ShowToolTip 属性设为false即可。2)当鼠标指到某父接点时,如何不显示显示“节点名:user +/- to expand/collapse”
    将TREE的SelectExpands 属性设为TRUE即可。3)不显示树型的问题
    首先:控件包没装好,使用上边介绍的控件包装一下试试。
    其次:TreeView要求客户端浏览器版本为IE5.5及以上,最好要求客户端升级为IE6.04)关于闪烁
    将AutoPostBack属性设置为真,SelectedIndexChange才能被执行。不过这样的话刷新的很厉害。不要刷新的话,将AutoPostBack属性设置为FALSE.5)如何实现用键盘上下左右键移动焦点时,自动选择新节点并执行新节点  
    将TREE的AutoSelect 属性设为TRUE即可。6)不想显示+/-符号按钮怎么做?
    将TREE的ShowPlus 属性设为False即可。7)不想显示层级连接线怎么做?
    将TREE的ShowLines 属性设为False即可。8)如何设置节点旁的图标
    ~ExpandedImageUrl、ImageUrl、SelectedImageUrl这3个属性是控制图标的,选择自己喜欢的就OK了。4.看看这个例子,对你一定有启发,是一棵无级树,不过在实际使用中可能会有些麻烦:
    http://218.56.11.178:8018/FileDown.aspx?FID=2465.这个论坛也使用了树(asp.net+C#+MSSQL 2000),并且代码开放,,如果觉得有参考价值,不妨装起来看看,其中还包含了其他一些常用的asp.net编程技巧,演示了TREE控件如何和数据库结合,动态显示库中的数据,这棵树只有两层,不过比较实用:
    http://218.56.11.178:8018/FileDown.aspx?FID=212
    其中:tree.aspx、tree.aspx.cs是TREE控件使用的主要部分。论坛的实际应用演示地址,在这里:
    http://expert.kaer.cn/