Поделиться через


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 свойства всех узлов в дереве к TitleID полям источника данных соответственно. Все узлы используют объявление привязки узла дерева, так как DataMemberDepth свойства не заданы.
<asp:TreeNodeBinding DataMember= "Book" TextField= "Title" ValueField= "ID"/> Привязывает Text и Value свойства всех узлов в дереве к TitleID полям Book элемента данных в источнике данных соответственно.
<asp:TreeNodeBinding Depth="2" TextField= "Title" ValueField= "ID"/> Привязывает Text и Value свойства всех узлов с глубиной 2 в дереве к TitleID полям элемента данных в источнике данных соответственно.
<asp:TreeNodeBinding DataMember="Book" Depth= "2" TextField= "Title" ValueField= "ID" ImageUrl= "Image.jpg"> Привязывает Text и Value свойства всех узлов с глубиной 2 в дереве к TitleID полям 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 Статическое значение для привязки TreeNode к ImageUrl свойству объекта.
ImageToolTip Статическое значение для привязки TreeNode к ImageToolTip свойству объекта.
NavigateUrl Статическое значение для привязки TreeNode к NavigateUrl свойству объекта.
PopulateOnDemand Статическое значение для привязки TreeNode к PopulateOnDemand свойству объекта.
SelectAction Статическое значение для привязки TreeNode к SelectAction свойству объекта.
ShowCheckBox Статическое значение для привязки TreeNode к ShowCheckBox свойству объекта.
Target Статическое значение для привязки TreeNode к Target свойству объекта.
Text Статическое значение для привязки TreeNode к Text свойству объекта.
ToolTip Статическое значение для привязки TreeNode к ToolTip свойству объекта.
Value Статическое значение для привязки TreeNode к Value свойству объекта.

Если определены конфликтующие TreeNodeBinding объекты, TreeView элемент управления применяет привязки узлов дерева в следующем порядке приоритета:

  1. Объект TreeNodeBinding , определяющий и соответствующий глубине и члену данных.

  2. Объект TreeNodeBinding , определяющий и соответствующий только элементу данных.

  3. Объект TreeNodeBinding , определяющий и соответствующий только глубине.

  4. Объект TreeNodeBinding , определяющий ни глубину, ни элемент данных. (Этот тип привязки узла дерева применяется ко всем узлам в дереве.)

  5. Объект TreeNodeBinding , не соответствующий источнику данных. В этом случае значение, возвращаемое методом ToString элемента данных, затем привязано к TextValue узлам, к которым 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 объекту отслеживать изменения состояния представления.

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

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