Cette documentation est archivée et n’est pas conservée.

TreeNodeBinding, classe

Remarque : cette classe est nouvelle dans le .NET Framework version 2.0.

Définit la relation entre un élément de données et le nœud auquel il est lié dans un contrôle TreeView.

Espace de noms : System.Web.UI.WebControls
Assembly : System.Web (dans system.web.dll)

public sealed class TreeNodeBinding : IStateManager, ICloneable, IDataSourceViewSchemaAccessor
public final class TreeNodeBinding implements IStateManager, ICloneable, 
	IDataSourceViewSchemaAccessor
public final class TreeNodeBinding implements IStateManager, ICloneable, 
	IDataSourceViewSchemaAccessor

Lorsque le contrôle TreeView est lié à une source de données où chaque élément de données contient plusieurs champs (tel qu'un élément XML avec plusieurs attributs), un nœud affiche la valeur qui est retournée par la méthode ToString de l'élément de données par défaut. Dans le cas d'un élément XML, le nœud affiche le nom de l'élément, lequel affiche la structure sous-jacente de l'arborescence, mais qui n'est pas très utile par ailleurs. Vous pouvez lier les propriétés d'un nœud à un champ spécifique en spécifiant des liaisons de nœud d'arbre. Un objet TreeNodeBinding définit la relation entre chaque élément de données et le nœud auquel il est lié.

Le contrôle TreeView stocke ses objets TreeNodeBinding dans la propriété DataBindings et applique les liaisons à la source de données afin de créer une relation un-à-un entre la hiérarchie d'arborescence et la hiérarchie de source de données. Pour chaque élément de données de la source de données, le contrôle TreeView tente de faire correspondre l'élément de données à un objet TreeNodeBinding afin de créer l'objet TreeNode correspondant.

Lorsque vous créez un objet TreeNodeBinding, vous devez spécifier les critères de liaison. Les critères indiquent à quel moment un élément de données doit être lié à un nœud. Vous pouvez spécifier la propriété Depth ou DataMember ou les deux. Vous obtenez un léger gain de performance en spécifiant les deux. Une profondeur de nœud spécifie le niveau de nœud qui est lié. Par exemple, la déclaration TreeNodeBinding suivante lie les champs Name et ID de la source de données aux propriétés Text et Value, respectivement, de tous les nœuds d'une profondeur de 0 :

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

Une donnée membre spécifie le type de l'élément de données dans la source de données sous-jacente, mais peut également représenter des informations différentes selon la source de données. Chaque élément de données dans une source de données hiérarchique (représentée par une interface System.Web.UI.IHierarchyData) expose une propriété IHierarchyData.Type qui spécifie le type de l'élément de données. Par exemple, la donnée membre d'un élément XML spécifie le nom de l'élément. Lorsqu'une source de données contient plusieurs types d'éléments de données, les données membres spécifient le type d'élément de données à utiliser. La déclaration TreeNodeBinding suivante lie les éléments <Book> d'un contrôle XmlDataSource à tous les nœuds dans l'arborescence, indépendamment de l'emplacement dans la hiérarchie :

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

Une fois que les critères de liaison sont établis, vous pouvez lier ensuite une propriété d'un objet TreeNode qui peut être lié à une valeur. Vous pouvez lier à un champ d'un élément de données ou à une valeur statique. Lorsqu'ils sont liés à une valeur statique, tous les objets TreeNode auxquels l'objet TreeNodeBinding est appliqué partagent la même valeur.

RemarqueRemarque

Vous pouvez substituer sélectivement une propriété liée dans un objet TreeNode en définissant directement la propriété correspondante dans le nœud.

Le tableau suivant répertorie les propriétés de la classe TreeNodeBinding qui vous permet de lier une propriété de l'objet TreeNode à un champ d'un élément de données.

Propriété

Description

ImageUrlField

Champ à lier à la propriété ImageUrl d'un objet TreeNode.

ImageToolTipField

Champ à lier à la propriété ImageToolTip d'un objet TreeNode.

NavigateUrlField

Champ à lier à la propriété NavigateUrl d'un objet TreeNode.

TextField

Champ à lier à la propriété Text d'un objet TreeNode.

ToolTipField

Champ à lier à la propriété ToolTip d'un objet TreeNode.

ValueField

Champ à lier à la propriété Value d'un objet TreeNode.

Le tableau suivant répertorie les propriétés de la classe TreeNodeBinding qui vous permet de lier une propriété de l'objet TreeNode à une valeur statique.

Propriété

Description

ImageUrl

Valeur statique à lier à la propriété ImageUrl d'un objet TreeNode.

ImageToolTip

Valeur statique à lier à la propriété ImageToolTip d'un objet TreeNode.

NavigateUrl

Valeur statique à lier à la propriété NavigateUrl d'un objet TreeNode.

PopulateOnDemand

Valeur statique à lier à la propriété PopulateOnDemand d'un objet TreeNode.

SelectAction

Valeur statique à lier à la propriété SelectAction d'un objet TreeNode.

ShowCheckBox

Valeur statique à lier à la propriété ShowCheckBox d'un objet TreeNode.

Target

Valeur statique à lier à la propriété Target d'un objet TreeNode.

Text

Valeur statique à lier à la propriété Text d'un objet TreeNode.

ToolTip

Valeur statique à lier à la propriété ToolTip d'un objet TreeNode.

Value

Valeur statique à lier à la propriété Value d'un objet TreeNode.

Si les objets TreeNodeBinding en conflit sont définis, le contrôle TreeView applique les liaisons de nœud d'arbre dans l'ordre suivant de priorité :

  1. Objet TreeNodeBinding qui définit une profondeur et une donnée membre et correspond aux deux.

  2. Objet TreeNodeBinding qui définit la donnée membre et correspond uniquement à celle-ci.

  3. Objet TreeNodeBinding qui définit la profondeur et correspond uniquement à celle-ci.

  4. Objet TreeNodeBinding qui ne définit ni la profondeur, ni les données membres. (Ce type de liaison de nœud d'arbre est appliqué à tous les nœuds dans l'arborescence.)

  5. Objet TreeNodeBinding qui n'a pas de correspondance dans la source de données. Dans ce cas, la valeur qui est retournée par la méthode ToString de l'élément de données est alors liée aux propriétés Text et Value des nœuds auxquels l'objet TreeNodeBinding est appliqué.

La classe TreeNodeBinding vous permet également de mettre en forme le texte qui est affiché dans un nœud en définissant la propriété FormatString.

Le tableau suivant décrit des exemples de déclaration de liaison de nœud d'arbre.

Exemple de liaison

Description

<asp:TreeNodeBinding TextField="Title" ValueField= "ID"/>

Lie les propriétés Text et Value de tous les nœuds dans l'arborescence aux champs Title et ID de la source de données, respectivement. Tous les nœuds utilisent cette déclaration de liaison de nœud d'arbre parce que les propriétés DataMember et Depth ne sont pas définies.

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

Lie les propriétés Text et Value de tous les nœuds dans l'arborescence aux champs Title et ID de l'élément de données Book dans la source de données, respectivement.

<asp:TreeNodeBinding Depth="2" TextField= "Title" ValueField= "ID"/>

Lie les propriétés Text et Value de tous les nœuds avec une profondeur de 2 dans l'arborescence aux champs Title et ID de l'élément de données dans la source de données, respectivement.

<asp:TreeNodeBinding DataMember="Book" Depth= "2" TextField= "Title" ValueField= "ID" ImageUrl= "Image.jpg">

Lie les propriétés Text et Value de tous les nœuds avec une profondeur de 2 dans l'arborescence aux champs Title et ID de l'élément de données Book dans la source de données, respectivement. Lie également la propriété ImageUrl des nœuds à une valeur statique.

Cette section contient trois exemples de code. Le premier exemple de code montre comment utiliser de façon déclarative des objets TreeNodeBinding pour définir la relation entre un nœud et un élément de données. Le deuxième exemple de code montre comment utiliser par programme des objets TreeNodeBinding pour définir la relation entre un nœud et un élément de données. Le troisième exemple de code fournit un exemple de données XML pour le premier et le deuxième exemples de code.

L'exemple de code suivant montre comment utiliser de façon déclarative des objets TreeNodeBinding pour définir la relation entre un nœud et un élément de données. Pour que cet exemple fonctionne, vous devez copier l'exemple de données XML fourni après cet exemple de code dans un fichier nommé Book.xml.


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

<html>
  <body>
    <form 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>


L'exemple de code suivant montre comment utiliser par programme des objets TreeNodeBinding pour définir la relation entre un nœud et un élément de données. Pour que cet exemple fonctionne, vous devez copier l'exemple de données XML fourni dans l'exemple de code suivant dans un fichier nommé Book.xml.


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

<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>
  <body>
    <form 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>


L'exemple de code suivant fournit un exemple de données XML pour les exemples de code précédents.

<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>

System.Object
  System.Web.UI.WebControls.TreeNodeBinding

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0
Afficher: