TreeNodeBinding 类

定义

定义数据项和 TreeView 控件中它所绑定到的节点之间的关系。

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

示例

下表显示了一些示例树节点绑定声明。

示例绑定 说明
<asp:TreeNodeBinding TextField="Title" ValueField= "ID"/> Text 树中所有节点的和 Value 属性分别绑定到 Title 数据源的字段 ID 。 所有节点都使用此树节点绑定声明, DataMember 因为未设置和 Depth 属性。
<asp:TreeNodeBinding DataMember= "Book" TextField= "Title" ValueField= "ID"/> Text树中所有节点的和Value属性分别绑定到Title数据源中数据项的Book字段ID
<asp:TreeNodeBinding Depth="2" TextField= "Title" ValueField= "ID"/> Text 树中深度为 2 的所有节点的和 Value 属性分别绑定到 Title 数据源中数据项的字段 ID
<asp:TreeNodeBinding DataMember="Book" Depth= "2" TextField= "Title" ValueField= "ID" ImageUrl= "Image.jpg"> Text树中深度为 2 的所有节点的和Value属性分别绑定到Title数据源中数据项的Book字段ID。 此外,将 ImageUrl 节点的属性绑定到静态值。

本部分包含三个代码示例。 第一个代码示例演示如何以声明方式使用 TreeNodeBinding 对象来定义节点和数据项之间的关系。 第二个代码示例演示如何以编程方式使用 TreeNodeBinding 对象来定义节点和数据项之间的关系。 第三个代码示例为第一个和第二个代码示例提供示例 XML 数据。

下面的代码示例演示如何以声明方式使用 TreeNodeBinding 对象来定义节点和数据项之间的关系。 若要使此示例正常工作,必须将示例 XML 数据(在此代码示例之后提供)复制到名为Book.xml的文件。


<%@ 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 XML Data Binding Example</title>
</head>
<body>
    <form id="form1" runat="server">
    
      <h3>TreeView XML Data Binding Example</h3>
    
      <asp:TreeView id="BookTreeView" 
        DataSourceID="BookXmlDataSource"
        runat="server">
         
        <DataBindings>
          <asp:TreeNodeBinding DataMember="Book" TextField="Title"/>
          <asp:TreeNodeBinding DataMember="Chapter" TextField="Heading"/>
          <asp:TreeNodeBinding DataMember="Section" TextField="Heading"/>
        </DataBindings>
         
      </asp:TreeView>

      <asp:XmlDataSource id="BookXmlDataSource"  
        DataFile="Book.xml"
        runat="server">
      </asp:XmlDataSource>
    
    </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 XML Data Binding Example</title>
</head>
<body>
    <form id="form1" runat="server">
    
      <h3>TreeView XML Data Binding Example</h3>
    
      <asp:TreeView id="BookTreeView" 
        DataSourceID="BookXmlDataSource"
        runat="server">
         
        <DataBindings>
          <asp:TreeNodeBinding DataMember="Book" TextField="Title"/>
          <asp:TreeNodeBinding DataMember="Chapter" TextField="Heading"/>
          <asp:TreeNodeBinding DataMember="Section" TextField="Heading"/>
        </DataBindings>
         
      </asp:TreeView>

      <asp:XmlDataSource id="BookXmlDataSource"  
        DataFile="Book.xml"
        runat="server">
      </asp:XmlDataSource>
    
    </form>
  </body>
</html>

下面的代码示例演示如何以编程方式使用 TreeNodeBinding 对象来定义节点和数据项之间的关系。 若要使此示例正常工作,必须将下一个代码示例中提供的示例 XML 数据复制到名为Book.xml的文件。


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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  void Page_Load(Object sender, EventArgs e)
  {

    // Create a new TreeView control.
    TreeView NewTree = new TreeView();

    // Set the properties of the TreeView control.
    NewTree.ID = "BookTreeView";
    NewTree.DataSourceID = "BookXmlDataSource";

    // Create the tree node binding relationship.

    // Create the root node binding.
    TreeNodeBinding RootBinding = new TreeNodeBinding();
    RootBinding.DataMember = "Book";
    RootBinding.TextField = "Title";

    // Create the parent node binding.
    TreeNodeBinding ParentBinding = new TreeNodeBinding();
    ParentBinding.DataMember = "Chapter";
    ParentBinding.TextField = "Heading";

    // Create the leaf node binding.
    TreeNodeBinding LeafBinding = new TreeNodeBinding();
    LeafBinding.DataMember = "Section";
    LeafBinding.TextField = "Heading";

    // Add bindings to the DataBindings collection.
    NewTree.DataBindings.Add(RootBinding);
    NewTree.DataBindings.Add(ParentBinding); 
    NewTree.DataBindings.Add(LeafBinding);

    // Manually register the event handler for the SelectedNodeChanged event.
    NewTree.SelectedNodeChanged += new EventHandler(this.Node_Change);

    // Add the TreeView control to the Controls collection of the PlaceHolder control.
    ControlPlaceHolder.Controls.Add(NewTree);

  }

  void Node_Change(Object sender, EventArgs e)
  {

    // Retrieve the TreeView control from the Controls collection of the PlaceHolder control.
    TreeView LocalTree = (TreeView)ControlPlaceHolder.FindControl("BookTreeView");

    // Display the selected node.
    Message.Text = "You selected: " + LocalTree.SelectedNode.Text;

  }

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>TreeView Constructor Example</title>
</head>
<body>
    <form id="form1" runat="server">
    
      <h3>TreeView Constructor Example</h3>
      
      <asp:PlaceHolder id="ControlPlaceHolder" runat="server">
      </asp:PlaceHolder>
   
      <asp:XmlDataSource id="BookXmlDataSource"  
        DataFile="Book.xml"
        runat="server">
      </asp:XmlDataSource>
      
      <br /><br />
      
      <asp:Label id="Message" runat="server"/>
    
    </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">
<script runat="server">

  Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)

    ' Create a new TreeView control.
    Dim NewTree As New TreeView

    ' Set the properties of the TreeView control.
    NewTree.ID = "BookTreeView"
    NewTree.DataSourceID = "BookXmlDataSource"

    ' Create the tree node binding relationship.

    ' Create the root node binding.
    Dim RootBinding As New TreeNodeBinding
    RootBinding.DataMember = "Book"
    RootBinding.TextField = "Title"

    ' Create the parent node binding.
    Dim ParentBinding As New TreeNodeBinding
    ParentBinding.DataMember = "Chapter"
    ParentBinding.TextField = "Heading"

    ' Create the leaf node binding.
    Dim LeafBinding As New TreeNodeBinding
    LeafBinding.DataMember = "Section"
    LeafBinding.TextField = "Heading"

    ' Add bindings to the DataBindings collection.
    NewTree.DataBindings.Add(RootBinding)
    NewTree.DataBindings.Add(ParentBinding)
    NewTree.DataBindings.Add(LeafBinding)

    ' Manually register the event handler for the SelectedNodeChanged event.
    AddHandler NewTree.SelectedNodeChanged, AddressOf Node_Change

    ' Add the TreeView control to the Controls collection of the PlaceHolder control.
    ControlPlaceHolder.Controls.Add(NewTree)

  End Sub

  Sub Node_Change(ByVal sender As Object, ByVal e As EventArgs)

    ' Retrieve the TreeView control from the Controls collection of the PlaceHolder control.
    Dim LocalTree As TreeView = CType(ControlPlaceHolder.FindControl("BookTreeView"), TreeView)

    ' Display the selected node.
    Message.Text = "You selected: " & LocalTree.SelectedNode.Text

  End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>TreeView Constructor Example</title>
</head>
<body>
    <form id="form1" runat="server">
    
      <h3>TreeView Constructor Example</h3>
      
      <asp:PlaceHolder id="ControlPlaceHolder" runat="server">
      </asp:PlaceHolder>
   
      <asp:XmlDataSource id="BookXmlDataSource"  
        DataFile="Book.xml"
        runat="server">
      </asp:XmlDataSource>
      
      <br /><br />
      
      <asp:Label id="Message" runat="server"/>
    
    </form>
  </body>
</html>

下面的代码示例提供上述代码示例的示例 XML 数据。

<Book Title="Book Title">  
    <Chapter Heading="Chapter 1">  
        <Section Heading="Section 1">  
        </Section>  
        <Section Heading="Section 2">  
        </Section>  
    </Chapter>  
    <Chapter Heading="Chapter 2">  
        <Section Heading="Section 1">  
        </Section>  
    </Chapter>  
</Book>  

注解

TreeView当控件绑定到数据源时,其中每个数据项包含多个字段 ((如具有多个属性的 XML 元素) ),则默认情况下,节点将显示数据项方法返回ToString的值。 在 XML 元素的情况下,节点显示元素名称,该名称显示树的基础结构,但不非常有用。 可以通过指定树节点绑定将节点的属性绑定到特定字段。 对象 TreeNodeBinding 定义每个数据项及其绑定到的节点之间的关系。

TreeView 控件将其 TreeNodeBinding 对象存储在属性中 DataBindings ,并将绑定应用于数据源,以在树层次结构和数据源层次结构之间创建一对一关系。 对于数据源中的每个数据项,控件 TreeView 会尝试将数据项与对象 TreeNodeBinding 匹配,以便创建相应的 TreeNode 对象。

创建 TreeNodeBinding 对象时,必须指定绑定的条件。 条件指示数据项何时应绑定到节点。 可以指定 DepthDataMember 属性或两个属性。 通过同时指定两者,性能略有提升。 节点深度指定绑定的节点级别。 例如,以下TreeNodeBinding声明将数据源的字段和ID字段分别绑定到NameText深度为 0 的所有节点的和Value属性:

<asp:TreeNodeBinding Depth="0" TextField="Name" ValueField="ID">  

数据成员指定基础数据源中的数据项的类型,但可以根据数据源表示不同的信息。 由) 接口表示的分层数据源中的每个数据项 (System.Web.UI.IHierarchyData 公开一个 IHierarchyData.Type 属性,该属性指定数据项的类型。 例如,XML 元素的数据成员指定元素的名称。 当数据源包含多个数据类型时,数据成员指定要使用的数据项类型。 以下 TreeNodeBinding 声明将 <Book> 控件的 XmlDataSource 元素绑定到树中的所有节点,而不考虑层次结构中的位置:

<asp:TreeNodeBinding DataMember="Book" TextField="Title" ValueField= "ISBN">  

建立绑定条件后,可以绑定可绑定到值的对象的属性 TreeNode 。 可以绑定到数据项的字段或静态值。 绑定到静态值时,应用该对象的所有 TreeNode 对象 TreeNodeBinding 共享相同的值。

备注

可以通过直接在节点中设置相应的属性来选择性地替代对象中的 TreeNode 绑定属性。

下表列出了类的属性 TreeNodeBinding ,该属性允许将对象的属性 TreeNode 绑定到数据项的字段。

属性 说明
ImageUrlField 要绑定到 ImageUrl 对象的属性的 TreeNode 字段。
ImageToolTipField 要绑定到 ImageToolTip 对象的属性的 TreeNode 字段。
NavigateUrlField 要绑定到 NavigateUrl 对象的属性的 TreeNode 字段。
TextField 要绑定到 Text 对象的属性的 TreeNode 字段。
ToolTipField 要绑定到 ToolTip 对象的属性的 TreeNode 字段。
ValueField 要绑定到 Value 对象的属性的 TreeNode 字段。

下表列出了允许将对象的属性绑定到静态值的类的属性TreeNodeBindingTreeNode

属性 说明
ImageUrl 要绑定到 ImageUrl 对象的属性的 TreeNode 静态值。
ImageToolTip 要绑定到 ImageToolTip 对象的属性的 TreeNode 静态值。
NavigateUrl 要绑定到 NavigateUrl 对象的属性的 TreeNode 静态值。
PopulateOnDemand 要绑定到 PopulateOnDemand 对象的属性的 TreeNode 静态值。
SelectAction 要绑定到 SelectAction 对象的属性的 TreeNode 静态值。
ShowCheckBox 要绑定到 ShowCheckBox 对象的属性的 TreeNode 静态值。
Target 要绑定到 Target 对象的属性的 TreeNode 静态值。
Text 要绑定到 Text 对象的属性的 TreeNode 静态值。
ToolTip 要绑定到 ToolTip 对象的属性的 TreeNode 静态值。
Value 要绑定到 Value 对象的属性的 TreeNode 静态值。

如果定义了冲突 TreeNodeBinding 对象,该 TreeView 控件将按以下优先级顺序应用树节点绑定:

  1. TreeNodeBinding定义和数据成员并匹配的对象。

  2. TreeNodeBinding仅定义数据成员并匹配的对象。

  3. TreeNodeBinding仅定义和匹配深度的对象。

  4. TreeNodeBinding定义深度和数据成员的对象。 (此类型的树节点绑定应用于树中的所有节点。)

  5. TreeNodeBinding数据源中没有匹配的对象。 在这种情况下,数据项方法返回ToString的值随后绑定到Text应用对象的节点TreeNodeBindingValue属性。

TreeNodeBinding 类还允许通过设置 FormatString 属性来设置节点中显示的文本的格式。

构造函数

TreeNodeBinding()

初始化 TreeNodeBinding 类的新实例。

属性

DataMember

获取或设置与数据项的 Type 属性进行匹配以确定是否应用树节点绑定的值。

Depth

获取或设置应用 TreeNodeBinding 对象的节点深度。

FormatString

获取或设置字符串,指定 TreeNodeBinding 对象应用到的节点的文本显示格式。

ImageToolTip

获取或设置显示在 TreeNodeBinding 对象应用到的节点旁边的图像的 ToolTip 文本。

ImageToolTipField

获取或设置数据源中字段的名称,该字段将绑定到 ImageToolTip 对象将应用到的 TreeNode 对象的 TreeNodeBinding 属性。

ImageUrl

获取或设置显示在应用 TreeNodeBinding 对象的节点旁边的图像的 URL。

ImageUrlField

获取或设置数据源中字段的名称,该字段将绑定到 ImageUrl 对象将应用到的 TreeNode 对象的 TreeNodeBinding 属性。

NavigateUrl

获取或设置单击 TreeNodeBinding 对象应用到的节点时链接到的 URL。

NavigateUrlField

获取或设置数据源中字段的名称,该字段将绑定到 NavigateUrl 对象将应用到的 TreeNode 对象的 TreeNodeBinding 属性。

PopulateOnDemand

获取或设置一个值,指示是否动态填充 TreeNodeBinding 对象应用到的节点。

SelectAction

获取或设置当选定 TreeNodeBinding 对象应用到的节点时引发的事件。

ShowCheckBox

获取或设置一个值,指示是否在 TreeNodeBinding 对象应用到的节点旁边显示复选框。

Target

获取或设置在其中显示与 TreeNodeBinding 对象应用到的节点关联的网页内容的目标窗口或框架。

TargetField

获取或设置数据源中字段的名称,该字段将绑定到 Target 对象将应用到的 TreeNode 对象的 TreeNodeBinding 属性。

Text

获取或设置为 TreeNodeBinding 对象应用到的节点显示的文本。

TextField

获取或设置数据源中字段的名称,该字段将绑定到 Text 对象将应用到的 TreeNode 对象的 TreeNodeBinding 属性。

ToolTip

获取或设置 TreeNodeBinding 对象应用到的节点的 ToolTip 文本。

ToolTipField

获取或设置数据源中字段的名称,该字段将绑定到 ToolTip 对象将应用到的 TreeNode 对象的 TreeNodeBinding 属性。

Value

获取或设置显示值,该值是不显示的,但用来存储有关 TreeNodeBinding 对象应用到的节点的任何其他数据,如用于处理回发事件的数据。

ValueField

获取或设置数据源中字段的名称,该字段将绑定到 Value 对象将应用到的 TreeNode 对象的 TreeNodeBinding 属性。

方法

Equals(Object)

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

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回 DataMember 属性。

显式接口实现

ICloneable.Clone()

创建 TreeNodeBinding 对象的副本。

IDataSourceViewSchemaAccessor.DataSourceViewSchema

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

IStateManager.IsTrackingViewState

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

IStateManager.LoadViewState(Object)

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

IStateManager.SaveViewState()

保存对象的视图状态更改。

IStateManager.TrackViewState()

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

适用于

另请参阅