TreeNodeBinding Clase

Definición

Define la relación entre un elemento de datos y el nodo al que enlaza en un control 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
Herencia
TreeNodeBinding
Implementaciones

Ejemplos

En la tabla siguiente se muestran algunas declaraciones de enlace de nodo de árbol de ejemplo.

Enlace de ejemplo Descripción
<asp:TreeNodeBinding TextField="Title" ValueField= "ID"/> Enlaza las Text propiedades y Value de todos los nodos del árbol a los Title campos y ID del origen de datos, respectivamente. Todos los nodos usan esta declaración de enlace de nodo de árbol porque no se establecen las DataMember propiedades y Depth .
<asp:TreeNodeBinding DataMember= "Book" TextField= "Title" ValueField= "ID"/> Enlaza las Text propiedades y Value de todos los nodos del árbol a los Title campos y ID del Book elemento de datos del origen de datos, respectivamente.
<asp:TreeNodeBinding Depth="2" TextField= "Title" ValueField= "ID"/> Enlaza las Text propiedades y Value de todos los nodos con una profundidad de 2 en el árbol a los Title campos y ID del elemento de datos del origen de datos, respectivamente.
<asp:TreeNodeBinding DataMember="Book" Depth= "2" TextField= "Title" ValueField= "ID" ImageUrl= "Image.jpg"> Enlaza las Text propiedades y Value de todos los nodos con una profundidad de 2 en el árbol a los Title campos y ID del Book elemento de datos del origen de datos, respectivamente. También enlaza la ImageUrl propiedad de los nodos a un valor estático.

Esta sección contiene tres ejemplos de código. En el primer ejemplo de código se muestra cómo usar TreeNodeBinding objetos mediante declaración para definir la relación entre un nodo y un elemento de datos. En el segundo ejemplo de código se muestra cómo usar TreeNodeBinding objetos mediante programación para definir la relación entre un nodo y un elemento de datos. En el tercer ejemplo de código se proporcionan datos XML de ejemplo para los ejemplos de código primero y segundo.

En el ejemplo de código siguiente se muestra cómo usar TreeNodeBinding objetos mediante declaración para definir la relación entre un nodo y un elemento de datos. Para que este ejemplo funcione correctamente, debe copiar los datos XML de ejemplo, proporcionados después de este ejemplo de código, en un archivo denominado 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>

En el ejemplo de código siguiente se muestra cómo usar TreeNodeBinding objetos mediante programación para definir la relación entre un nodo y un elemento de datos. Para que este ejemplo funcione correctamente, debe copiar los datos XML de ejemplo que se proporcionan en el siguiente ejemplo de código a un archivo denominado 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>

En el ejemplo de código siguiente se proporcionan datos XML de ejemplo para los ejemplos de código anteriores.

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

Comentarios

Cuando el TreeView control está enlazado a un origen de datos donde cada elemento de datos contiene varios campos (como un elemento XML con varios atributos), un nodo muestra el valor devuelto por el ToString método del elemento de datos de forma predeterminada. En el caso de un elemento XML, el nodo muestra el nombre del elemento, que muestra la estructura subyacente del árbol, pero no es muy útil de lo contrario. Puede enlazar las propiedades de un nodo a un campo específico especificando enlaces de nodo de árbol. Un TreeNodeBinding objeto define la relación entre cada elemento de datos y el nodo al que está enlazando.

El TreeView control almacena sus TreeNodeBinding objetos en la DataBindings propiedad y aplica los enlaces al origen de datos para crear una relación uno a uno entre la jerarquía de árbol y la jerarquía del origen de datos. Para cada elemento de datos del origen de datos, el TreeView control intenta hacer coincidir el elemento de datos con un TreeNodeBinding objeto para crear el objeto correspondiente TreeNode .

Al crear un TreeNodeBinding objeto, debe especificar los criterios para el enlace. Los criterios indican cuándo se debe enlazar un elemento de datos a un nodo. Puede especificar la Depth propiedad o DataMember , o ambas propiedades. Hay una ligera ganancia de rendimiento especificando ambos. Una profundidad de nodo especifica el nivel de nodo que se enlaza. Por ejemplo, la siguiente TreeNodeBinding declaración enlaza los Name campos y ID del origen de datos a las Text propiedades y Value , respectivamente, de todos los nodos con una profundidad de 0:

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

Un miembro de datos especifica el tipo del elemento de datos en el origen de datos subyacente, pero puede representar información diferente en función del origen de datos. Cada elemento de datos de un origen de datos jerárquico (representado por una System.Web.UI.IHierarchyData interfaz) expone una IHierarchyData.Type propiedad , que especifica el tipo del elemento de datos. Por ejemplo, el miembro de datos de un elemento XML especifica el nombre del elemento. Cuando un origen de datos contiene varios tipos de elementos de datos, el miembro de datos especifica el tipo de elemento de datos que se va a usar. La siguiente TreeNodeBinding declaración enlaza los <Book> elementos de un XmlDataSource control a todos los nodos del árbol, independientemente de la ubicación de la jerarquía:

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

Una vez establecidos los criterios de enlace, puede enlazar una propiedad de un TreeNode objeto que se puede enlazar a un valor. Puede enlazar a un campo de un elemento de datos o a un valor estático. Cuando se enlaza a un valor estático, todos los objetos a los TreeNode que se aplica el TreeNodeBinding objeto comparten el mismo valor.

Nota

Puede invalidar selectivamente una propiedad enlazada en un TreeNode objeto estableciendo la propiedad correspondiente directamente en el nodo.

En la tabla siguiente se enumeran las propiedades de la TreeNodeBinding clase que permiten enlazar una propiedad del TreeNode objeto a un campo de un elemento de datos.

Propiedad Descripción
ImageUrlField Campo que se va a enlazar a la ImageUrl propiedad de un TreeNode objeto .
ImageToolTipField Campo que se va a enlazar a la ImageToolTip propiedad de un TreeNode objeto .
NavigateUrlField Campo que se va a enlazar a la NavigateUrl propiedad de un TreeNode objeto .
TextField Campo que se va a enlazar a la Text propiedad de un TreeNode objeto .
ToolTipField Campo que se va a enlazar a la ToolTip propiedad de un TreeNode objeto .
ValueField Campo que se va a enlazar a la Value propiedad de un TreeNode objeto .

En la tabla siguiente se enumeran las propiedades de la TreeNodeBinding clase que permiten enlazar una propiedad del TreeNode objeto a un valor estático.

Propiedad Descripción
ImageUrl Valor estático que se va a enlazar a la ImageUrl propiedad de un TreeNode objeto .
ImageToolTip Valor estático que se va a enlazar a la ImageToolTip propiedad de un TreeNode objeto .
NavigateUrl Valor estático que se va a enlazar a la NavigateUrl propiedad de un TreeNode objeto .
PopulateOnDemand Valor estático que se va a enlazar a la PopulateOnDemand propiedad de un TreeNode objeto .
SelectAction Valor estático que se va a enlazar a la SelectAction propiedad de un TreeNode objeto .
ShowCheckBox Valor estático que se va a enlazar a la ShowCheckBox propiedad de un TreeNode objeto .
Target Valor estático que se va a enlazar a la Target propiedad de un TreeNode objeto .
Text Valor estático que se va a enlazar a la Text propiedad de un TreeNode objeto .
ToolTip Valor estático que se va a enlazar a la ToolTip propiedad de un TreeNode objeto .
Value Valor estático que se va a enlazar a la Value propiedad de un TreeNode objeto .

Si se definen objetos en conflicto TreeNodeBinding , el TreeView control aplica los enlaces de nodo de árbol en el siguiente orden de precedencia:

  1. Objeto TreeNodeBinding que define y coincide con una profundidad y un miembro de datos.

  2. Objeto TreeNodeBinding que define y coincide solo con el miembro de datos.

  3. Objeto TreeNodeBinding que define y coincide solo con la profundidad.

  4. Objeto TreeNodeBinding que define ni la profundidad ni el miembro de datos. (Este tipo de enlace de nodo de árbol se aplica a todos los nodos del árbol).

  5. Objeto TreeNodeBinding que no tiene una coincidencia en el origen de datos. En este caso, el valor devuelto por el ToString método del elemento de datos se enlaza a las Text propiedades y Value de los nodos a los que se aplica el TreeNodeBinding objeto.

La TreeNodeBinding clase también permite dar formato al texto que se muestra en un nodo estableciendo la FormatString propiedad .

Constructores

TreeNodeBinding()

Inicializa una nueva instancia de la clase TreeNodeBinding.

Propiedades

DataMember

Obtiene o establece el valor que se debe comparar con una propiedad Type de un elemento de datos para determinar si se debe aplicar el enlace de nodo de árbol.

Depth

Obtiene o establece la profundidad de nodo a la que se aplica el objeto TreeNodeBinding.

FormatString

Obtiene o establece la cadena que especifica el formato de presentación del texto de un nodo en el que se aplica el objeto TreeNodeBinding.

ImageToolTip

Obtiene o establece el texto de información sobre herramientas de una imagen que se muestra al lado de un nodo al que se aplica el objeto TreeNodeBinding.

ImageToolTipField

Obtiene o establece el nombre del campo del origen de datos que se debe enlazar a la propiedad ImageToolTip de un objeto TreeNode al que se aplica el objeto TreeNodeBinding.

ImageUrl

Obtiene o establece la dirección URL de una imagen que se muestra al lado de un nodo al que se aplica el objeto TreeNodeBinding.

ImageUrlField

Obtiene o establece el nombre del campo del origen de datos que se debe enlazar a la propiedad ImageUrl de un objeto TreeNode al que se aplica el objeto TreeNodeBinding.

NavigateUrl

Obtiene o establece la dirección URL a la que se debe vincular al hacer clic en un nodo al que se aplica el objeto TreeNodeBinding.

NavigateUrlField

Obtiene o establece el nombre del campo del origen de datos que se debe enlazar a la propiedad NavigateUrl de un objeto TreeNode al que se aplica el objeto TreeNodeBinding.

PopulateOnDemand

Obtiene o establece un valor que indica si el nodo al que se aplica el objeto TreeNodeBinding se rellena de forma dinámica.

SelectAction

Obtiene o establece los eventos que se deben provocar al seleccionar el nodo al que se aplica el objeto TreeNodeBinding.

ShowCheckBox

Obtiene o establece un valor que indica si se muestra una casilla al lado de un nodo al que se aplica el objeto TreeNodeBinding.

Target

Obtiene o establece la ventana o marco de destino en que se debe mostrar el contenido de página Web asociado a un nodo al que se aplica el objeto TreeNodeBinding.

TargetField

Obtiene o establece el nombre del campo del origen de datos que se debe enlazar a la propiedad Target de un objeto TreeNode al que se aplica el objeto TreeNodeBinding.

Text

Obtiene o establece el texto que se muestra en el nodo al que se aplica el objeto TreeNodeBinding.

TextField

Obtiene o establece el nombre del campo del origen de datos que se debe enlazar a la propiedad Text de un objeto TreeNode al que se aplica el objeto TreeNodeBinding.

ToolTip

Obtiene o establece el texto de información sobre herramientas de un nodo al que se aplica el objeto TreeNodeBinding.

ToolTipField

Obtiene o establece el nombre del campo del origen de datos que se debe enlazar a la propiedad ToolTip de un objeto TreeNode al que se aplica el objeto TreeNodeBinding.

Value

Obtiene o establece un valor que, en lugar de mostrarse, se utiliza para almacenar datos adicionales sobre un nodo al que se aplica el objeto TreeNodeBinding, por ejemplo, datos que se utilizan para controlar eventos de postback.

ValueField

Obtiene o establece el nombre del campo del origen de datos que se debe enlazar a la propiedad Value de un objeto TreeNode al que se aplica el objeto TreeNodeBinding.

Métodos

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve la propiedad DataMember.

Implementaciones de interfaz explícitas

ICloneable.Clone()

Crea una copia del objeto TreeNodeBinding .

IDataSourceViewSchemaAccessor.DataSourceViewSchema

Para obtener una descripción de este miembro, vea DataSourceViewSchema.

IStateManager.IsTrackingViewState

Para obtener una descripción de este miembro, vea IsTrackingViewState.

IStateManager.LoadViewState(Object)

Carga el estado de vista cargado anteriormente del nodo.

IStateManager.SaveViewState()

Guarda los cambios del estado de vista de un objeto.

IStateManager.TrackViewState()

Indica al objeto TreeNode que efectúe el seguimiento de los cambios de su estado de vista.

Se aplica a

Consulte también