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 элементам данных и ID полям Book элемента данных в источнике данных соответственно.
<asp:TreeNodeBinding Depth="2" TextField= "Title" ValueField= "ID"/> Привязывает Text свойства Value всех узлов с глубиной 2 в дереве к Title ID элементам данных и полям элемента данных в источнике данных соответственно.
<asp:TreeNodeBinding DataMember="Book" Depth= "2" TextField= "Title" ValueField= "ID" ImageUrl= "Image.jpg"> Привязывает Text свойства Value всех узлов с глубиной 2 в дереве к Title ID элементам данных и полям Book элемента данных в источнике данных соответственно. Также привязывает 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 объекта необходимо указать критерии привязки. Критерий указывает, когда элемент данных должен быть привязан к узлу. Можно указать Depth свойство или DataMember оба свойства. При указании обоих показателей производительности наблюдается небольшое увеличение производительности. Глубина узла указывает уровень узла, который получает привязку. Например, следующее TreeNodeBinding объявление привязывает Name и ID поля источника данных к Text свойствам и Value свойствам всех узлов с глубиной 0:

<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 Поле для привязки TreeNode к свойству ImageUrl объекта.
ImageToolTipField Поле для привязки TreeNode к свойству ImageToolTip объекта.
NavigateUrlField Поле для привязки TreeNode к свойству NavigateUrl объекта.
TextField Поле для привязки TreeNode к свойству Text объекта.
ToolTipField Поле для привязки TreeNode к свойству ToolTip объекта.
ValueField Поле для привязки TreeNode к свойству Value объекта.

В следующей таблице перечислены свойства TreeNodeBinding класса, позволяющие привязать свойство TreeNode объекта к статическому значению.

Свойство Описание
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 Value узлам, к которым TreeNodeBinding применяется объект.

Класс TreeNodeBinding также позволяет отформатировать текст, отображаемый в узле, задав FormatString свойство.

Конструкторы

TreeNodeBinding()

Инициализирует новый экземпляр класса TreeNodeBinding.

Свойства

DataMember

Получает или задает значение, которое необходимо сопоставить со свойством Type элемента данных, чтобы определить, должна ли применяться привязка узла дерева.

Depth

Получает или задает глубину узла, на которой применяется объект TreeNodeBinding.

FormatString

Получает или задает строку, определяющую формат отображения текста узла, к которому применяется объект TreeNodeBinding.

ImageToolTip

Получает или задает текст подсказки для изображения, которое отображается возле узла, к которому применяется объект TreeNodeBinding.

ImageToolTipField

Получает или задает имя поля из источника данных для привязки к свойству ImageToolTip объекта TreeNode, к которому применяется объект TreeNodeBinding.

ImageUrl

Получает или задает URL-адрес изображения, отображаемого рядом с узлом, к которому применяется объект TreeNodeBinding.

ImageUrlField

Получает или задает имя поля из источника данных для привязки к свойству ImageUrl объекта TreeNode, к которому применяется объект TreeNodeBinding.

NavigateUrl

Получает или задает URL-адрес для перехода после щелчка по узлу, к которому применяется объект TreeNodeBinding.

NavigateUrlField

Получает или задает имя поля из источника данных для привязки к свойству NavigateUrl объекта TreeNode, к которому применяется объект TreeNodeBinding.

PopulateOnDemand

Получает или задает значение, показывающее, заполняется ли динамически узел, к которому применяется объект TreeNodeBinding.

SelectAction

Получает или задает событие (события), которое должно возникать после выбора узла, к которому применяется объект TreeNodeBinding.

ShowCheckBox

Получает или задает значение, указывающее, отображается ли флажок рядом с узлом, к которому применяется объект TreeNodeBinding.

Target

Получает или задает целевое окно или фрейм для отображения содержимого веб-страницы, связанного с узлом, к которому применяется объект TreeNodeBinding.

TargetField

Получает или задает имя поля из источника данных для привязки к свойству Target объекта TreeNode, к которому применяется объект TreeNodeBinding.

Text

Получает или задает текст, отображаемый для узла, к которому применяется объект TreeNodeBinding.

TextField

Получает или задает имя поля из источника данных для привязки к свойству Text объекта TreeNode, к которому применяется объект TreeNodeBinding.

ToolTip

Получает или задает текст подсказки для узла, к которому применяется объект TreeNodeBinding.

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 инструкции отслеживать изменения в его состоянии представления.

Применяется к

См. также раздел