Compartir por


TreeNodeBinding Clase

Definición

Define la relación entre un elemento de datos y el nodo al que está enlazando en un TreeView control.

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. El tercer ejemplo de código proporciona 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 (por ejemplo, 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 en caso 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 conflictivos TreeNodeBinding , el TreeView control aplica los enlaces de nodo de árbol en el siguiente orden de prioridad:

  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

Nombre Description
TreeNodeBinding()

Inicializa una nueva instancia de la clase TreeNodeBinding.

Propiedades

Nombre Description
DataMember

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

Depth

Obtiene o establece la profundidad del nodo en la que se aplica el TreeNodeBinding objeto.

FormatString

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

ImageToolTip

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

ImageToolTipField

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

ImageUrl

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

ImageUrlField

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

NavigateUrl

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

NavigateUrlField

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

PopulateOnDemand

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

SelectAction

Obtiene o establece el evento o eventos que se van a generar cuando se selecciona un nodo al que se aplica el TreeNodeBinding objeto.

ShowCheckBox

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

Target

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

TargetField

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

Text

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

TextField

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

ToolTip

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

ToolTipField

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

Value

Obtiene o establece un valor mostrado que no se muestra, pero se usa para almacenar datos adicionales sobre un nodo al que se aplica el TreeNodeBinding objeto, como los datos usados para controlar eventos de postback.

ValueField

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

Métodos

Nombre Description
Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
GetHashCode()

Actúa como función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
ToString()

Devuelve la DataMember propiedad .

Implementaciones de interfaz explícitas

Nombre Description
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 guardado anteriormente para el nodo.

IStateManager.SaveViewState()

Guarda los cambios de estado de vista en un objeto .

IStateManager.TrackViewState()

Indica al TreeNode objeto que realice un seguimiento de los cambios en su estado de vista.

Se aplica a

Consulte también