TreeNode 类

定义

表示 TreeView 控件中的节点。

public ref class TreeNode : ICloneable, System::Web::UI::IStateManager
public class TreeNode : ICloneable, System.Web.UI.IStateManager
type TreeNode = class
    interface IStateManager
    interface ICloneable
Public Class TreeNode
Implements ICloneable, IStateManager
继承
TreeNode
实现

示例

下面的代码示例演示如何为下一个代码示例设置帧。


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>TreeView Frameset Example</title>
</head>
         
    <frameset cols="30%, 75%">
   
        <frame title="MenuFrame" name="Menu" src="TreeViewFramecs.aspx"/>
        <frame title="ContentFrame" name="Content" src="Home.aspx"/> 
           
    </frameset>      
   
</html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>TreeView Frameset Example</title>
</head>
         
    <frameset cols="30%, 75%">
   
        <frame title="MenuFrame" name="Menu" src="TreeViewFramevb.aspx"/>
        <frame title="ContentFrame" name="Content" src="Home.aspx"/> 
           
    </frameset>      
   
</html>

下面的代码示例演示如何使用声明性语法在 控件中创建 TreeNodeTreeView 对象。 此示例在上一示例的框架集中用于显示目录。


<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>TreeView Declarative Syntax Example</title>
</head>
<body>
    <form id="form1" runat="server">
    
      <h3>TreeView Declarative Syntax Example</h3>
      
      <asp:TreeView id="SampleTreeView" 
        runat="server">
         
        <Nodes>
        
          <asp:TreeNode Value="Home" 
            NavigateUrl="Home.aspx" 
            Text="Home"
            Target="Content" 
            Expanded="True">
             
            <asp:TreeNode Value="Page 1" 
              NavigateUrl="Page1.aspx" 
              Text="Page1"
              Target="Content">
               
              <asp:TreeNode Value="Section 1" 
                NavigateUrl="Section1.aspx" 
                Text="Section 1"
                Target="Content"/>
                 
            </asp:TreeNode>              
            
            <asp:TreeNode Value="Page 2" 
              NavigateUrl="Page2.aspx"
              Text="Page 2"
              Target="Content">
               
            </asp:TreeNode> 
            
          </asp:TreeNode>
        
        </Nodes>
        
      </asp:TreeView>

    </form>
  </body>
</html>

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>TreeView Declarative Syntax Example</title>
</head>
<body>
    <form id="form1" runat="server">
    
      <h3>TreeView Declarative Syntax Example</h3>
      
      <asp:TreeView id="SampleTreeView" 
        runat="server">
         
        <Nodes>
        
          <asp:TreeNode Value="Home" 
            NavigateUrl="Home.aspx" 
            Text="Home"
            Target="Content" 
            Expanded="True">
             
            <asp:TreeNode Value="Page 1" 
              NavigateUrl="Page1.aspx" 
              Text="Page1"
              Target="Content">
               
              <asp:TreeNode Value="Section 1" 
                NavigateUrl="Section1.aspx" 
                Text="Section 1"
                Target="Content"/>
                 
            </asp:TreeNode>              
            
            <asp:TreeNode Value="Page 2" 
              NavigateUrl="Page2.aspx"
              Text="Page 2"
              Target="Content">
               
            </asp:TreeNode> 
            
          </asp:TreeNode>
        
        </Nodes>
        
      </asp:TreeView>

    </form>
  </body>
</html>

注解

控件 TreeView 由节点组成。 树中的每个条目称为节点,由 TreeNode 对象表示。 包含其他节点的节点称为 父节点。 另一个节点包含的节点称为 子节点。 没有子节点的节点称为 叶节点。 未包含在任何其他节点但作为所有其他节点的上级节点的节点是 根节点。 节点可以是父节点和子节点,但根节点、父节点和叶节点是互斥的。 节点的多个视觉和行为属性取决于节点是 节点、 节点还是 节点。

尽管典型的树只有一个根节点,但 TreeView 控件允许向树结构添加多个根节点。 如果要显示项列表而不显示单个main根节点(如在产品类别列表中),此功能非常有用。

节点主要将数据存储在两个属性中,即 Text 属性和 属性 Value 。 属性的值 Text 显示在 控件中 TreeView ,属性 Value 用于存储有关节点的任何其他数据,例如用于处理回发事件的数据。 节点还会在 属性中 ValuePath 存储从节点到其根节点的路径。 属性 ValuePath 指示节点相对于根节点的位置。

注意

同一级别的节点必须每个具有属性的唯一值 Value ; TreeView 控件无法区分同一级别具有相同值的不同节点。 在这种情况下,如果用户单击具有重复值的节点,则会选择控件中 TreeView 第一个显示的节点。

对象由以下四个 TreeNode 用户界面组成, (UI) 元素,这些元素可以自定义或隐藏:

  • 用于显示节点是展开、折叠还是不可展开的扩展节点指示器图标。

  • 与节点关联的可选检查框。

  • 可选节点映像。

  • 节点文本。

可以通过设置 ExpandImageUrl类的 、 CollapseImageUrlNoExpandImageUrl 属性,为可展开、可折叠和不可展开的 TreeView 节点指示器指定自定义映像。 甚至可以通过将 类的 TreeView 属性设置为 ShowExpandCollapsefalse来完全隐藏扩展节点指示器图标。

若要在节点旁边显示检查框,请设置 ShowCheckBoxes 类的 TreeView 属性。 当 属性ShowCheckBoxes设置为 以外的TreeNodeType.Node值时,检查框显示在指定节点类型旁边。 可以通过设置节点的 属性,有选择地替代单个节点的ShowCheckBox检查框。 显示检查框时,使用 Checked 属性确定是否选择了检查框。

可以通过设置 ImageUrl 属性在节点中显示图像。 此图像显示在节点文本旁边。

控件中 TreeView 节点的文本可以处于两种模式之一:选择模式或导航模式。 默认情况下,节点处于选择模式。 若要将节点置于导航模式,请将节点的 NavigateUrl 属性设置为空字符串 (“”) 以外的值。 若要将节点置于选择模式,请将节点的 NavigateUrl 属性设置为空字符串。

注意

某些 Internet 浏览器存在可能影响控件性能 TreeView 的限制。 例如,Microsoft Internet Explorer 6.0 的 URL 字符限制为 2067 个字符。 如果节点的 URL 中的字符数大于该数字,则展开该节点将失败,并且不会引发异常。

默认情况下,单击处于选择模式的节点会将页面发回到服务器并引发 SelectedNodeChanged 事件。 可以选择通过设置节点的 SelectAction 属性来指定要引发的其他事件。 有关详细信息,请参阅 SelectAction。 若要确定在选择模式下单击了哪个节点,请使用 SelectedNode 控件的 TreeView 属性。

当某个节点处于导航模式时,将禁用该节点的所有选择事件。 单击导航模式下的节点会将用户定向到指定的 URL。 可以选择设置 Target 属性以指定要在其中显示链接内容的窗口或框架。

TreeNode 包含多个属性,这些属性用于存储节点的状态。 Selected使用 属性确定是否选择了节点。 若要确定节点是否已展开,请使用 Expanded 属性。 属性 DataBound 用于确定节点是否绑定到数据。 当节点绑定到数据时,可以使用 属性访问基础数据项 DataItem

类提供了几个属性,这些属性有助于确定节点相对于树中其他节点的位置。 Depth使用 属性确定节点的深度。 可以使用 属性获取从当前节点到其根节点的带分隔符的 ValuePath 节点列表。 若要确定节点的父节点,请使用 Parent 属性。 使用 ChildNodes 集合访问子节点。

有时,由于数据大小或依赖于用户输入的自定义内容,以静态方式预定义树结构是不切实际的。 因此,控件 TreeView 支持动态节点填充。 节点可以在运行时进行扩展时填充该节点。 请注意,如果保留异步创建的节点,可能会发生意外行为。 例如,如果使用后台工作线程异步填充节点,则节点树可能不会立即填充,尽管控件在页面生命周期的其余部分继续进行。 回发时,当加载控件的视图状态但节点树未完全填充时,延迟创建节点可能会导致问题。 有关动态节点填充的详细信息,请参阅 PopulateOnDemand 属性。

有关 实例 TreeNode的初始属性值列表, TreeNode 请参阅 构造函数。

构造函数

TreeNode()

不使用文本或值初始化 TreeNode 类的新实例。

TreeNode(String)

使用指定的文本初始化 TreeNode 类的新实例。

TreeNode(String, String)

使用指定的文本和值初始化 TreeNode 类的新实例。

TreeNode(String, String, String)

使用指定的文本、值和图像 URL 初始化 TreeNode 类的新实例。

TreeNode(String, String, String, String, String)

使用指定的文本、值、图像 URL、导航 URL 和目标初始化 TreeNode 类的新实例。

TreeNode(TreeView, Boolean)

使用指定的所有者初始化 TreeNode 类的新实例。

属性

Checked

获取或设置一个值,该值指示节点的复选框是否被选中。

ChildNodes

获取 TreeNodeCollection 集合,该集合包含当前节点的第一级子节点。

DataBound

获取一个值,该值指示节点是否是通过数据绑定创建的。

DataItem

获取绑定到控件的数据项。

DataPath

获取绑定到节点的数据的路径。

Depth

获取节点的深度。

Expanded

获取或设置一个值,该值指示是否展开节点。

ImageToolTip

获取或设置在节点旁边显示的图像的工具提示文本。

ImageUrl

获取或设置节点旁显示的图像的 URL。

IsTrackingViewState

获取一个值,该值指示节点是否保存其视图状态更改。

NavigateUrl

获取或设置单击节点时导航到的 URL。

Parent

获取当前节点的父节点。

PopulateOnDemand

获取或设置一个值,该值指示是否动态填充节点。

SelectAction

获取或设置选择节点时引发的事件。

Selected

获取或设置一个值,该值指示是否选择节点。

ShowCheckBox

获取或设置一个值,该值指示是否在节点旁显示一个复选框。

Target

获取或设置用来显示与节点关联的网页内容的目标窗口或框架。

Text

获取或设置为 TreeView 控件中的节点显示的文本。

ToolTip

获取或设置节点的工具提示文本。

Value

获取或设置用于存储有关节点的任何其他数据(如用于处理回发事件的数据)的非显示值。

ValuePath

获取从根节点到当前节点的路径。

方法

Clone()

用当前 TreeNode 实例的属性创建 TreeNode 类的新实例。

Collapse()

折叠当前树节点。

CollapseAll()

折叠当前节点及其所有子节点。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
Expand()

展开当前树节点。

ExpandAll()

展开当前节点及其所有子节点。

GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
LoadViewState(Object)

加载节点先前保存的视图状态。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
RenderPostText(HtmlTextWriter)

允许控件开发人员向节点添加其他呈现。

RenderPreText(HtmlTextWriter)

允许控件开发人员向节点添加其他呈现。

SaveViewState()

保存节点的当前视图状态。

Select()

选择 TreeView 控件中的当前节点。

ToggleExpandState()

切换节点的展开和折叠状态。

ToString()

返回表示当前对象的字符串。

(继承自 Object)
TrackViewState()

标记开始跟踪并保存节点的视图状态更改的起始点。

显式接口实现

ICloneable.Clone()

创建 TreeNode 对象的副本。

IStateManager.IsTrackingViewState

有关此成员的说明,请参见 IsTrackingViewState

IStateManager.LoadViewState(Object)

加载节点的以前保存的视图状态。

IStateManager.SaveViewState()

保存 Object 的视图状态更改。

IStateManager.TrackViewState()

指示 TreeNode 对象跟踪对其视图状态的更改。

适用于

另请参阅