Esta documentación está archivada y no tiene mantenimiento.

TreeView.PopulateNodesFromClient (Propiedad)

Actualización: noviembre 2007

Obtiene o establece un valor que indica si los datos de nodo se rellenan a demanda del cliente.

Espacio de nombres:  System.Web.UI.WebControls
Ensamblado:  System.Web (en System.Web.dll)

public bool PopulateNodesFromClient { get; set; }
/** @property */
public boolean get_PopulateNodesFromClient()
/** @property */
public  void set_PopulateNodesFromClient(boolean value)

public function get PopulateNodesFromClient () : boolean
public function set PopulateNodesFromClient (value : boolean)
<asp:TreeView PopulateNodesFromClient="True|False" />

Valor de propiedad

Tipo: System.Boolean
true para rellenar los datos del nodo de árbol a demanda del cliente; de lo contrario, false. El valor predeterminado es true.

En ocasiones, no resulta práctico predefinir la estructura del árbol estáticamente, porque el tamaño de los datos o el contenido personalizado pueden depender de la información proporcionada por el usuario. Debido a esto, el control TreeView admite que los nodos se rellenen de forma dinámica. Cuando se establece la propiedad PopulateOnDemand de un nodo en true, el nodo se rellena en tiempo de ejecución cuando se expande.

Además de rellenar nodos bajo demanda, es posible rellenar directamente los nodos en un explorador cliente compatible. Cuando la propiedad PopulateNodesFromClient se establece en true, se llama a un servicio del cliente para rellenar los nodos del árbol, lo que elimina la necesidad de devolver datos al servidor. De lo contrario, el control TreeView devuelve datos al servidor para rellenar los nodos.

0616s8k9.alert_note(es-es,VS.90).gifNota:

La propiedad EnableClientScript también se debe establecer en true para que la propiedad PopulateNodesFromClient se establezca en true.

Para rellenar un nodo en el cliente, establezca primero la propiedad PopulateNodesFromClient en true y, a continuación, establezca la propiedad PopulateOnDemand del nodo en true. Luego, defina un método de control de eventos para el evento TreeNodePopulate que rellena el nodo mediante programación. Un método típico de control de eventos recupera datos del nodo de un origen de datos, coloca los datos en una estructura de datos y, a continuación, agrega la estructura de nodo a la colección ChildNodes del nodo que se está llenando. Para crear una estructura de nodo, agregue objetos TreeNode a la colección ChildNodes de un nodo primario.

0616s8k9.alert_note(es-es,VS.90).gifNota:

Cuando la propiedad PopulateOnDemand de un nodo se establece en true, el nodo se debe rellenar dinámicamente. No se puede anidar mediante declaración otro nodo debajo de él; de lo contrario, aparecerá un error en la página.

0616s8k9.alert_note(es-es,VS.90).gifNota:

La característica de llenado de nodos en el cliente se admite en exploradores compatibles con los scripts de devolución de llamada. Para comprobar si un explorador admite el acceso a los scripts de devolución de llamada, use la propiedad SupportsCallback de la clase HttpBrowserCapabilities. Puede tener acceso a la instancia de la clase HttpBrowserCapabilities para la solicitud actual a través de la propiedad Browser de la clase HttpRequest.

El valor de esta propiedad se almacena en el estado de vista.

En el siguiente ejemplo se muestra cómo usar la propiedad PopulateNodesFromClient para habilitar el relleno de nodos del lado cliente en el control TreeView. Tenga en cuenta que cuando se habilita el relleno de nodo del lado cliente, los nodos se rellenan dinámicamente en el cliente, sin necesidad de devolver datos al servidor.


<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  void PopulateNode(Object sender, TreeNodeEventArgs e)
  {

    // Call the appropriate method to populate a node at a particular level.
    switch(e.Node.Depth)
    {
      case 0:
        // Populate the first-level nodes.
        PopulateCategories(e.Node);
        break;
      case 1:
        // Populate the second-level nodes.
        PopulateProducts(e.Node);
        break;
      default:
        // Do nothing.
        break;
    }

  }

  void PopulateCategories(TreeNode node)
  {

    // Query for the product categories. These are the values
    // for the second-level nodes.
    DataSet ResultSet = RunQuery("Select CategoryID, CategoryName From Categories");

    // Create the second-level nodes.
    if(ResultSet.Tables.Count > 0)
    {

      // Iterate through and create a new node for each row in the query results.
      // Notice that the query results are stored in the table of the DataSet.
      foreach (DataRow row in ResultSet.Tables[0].Rows)
      {

        // Create the new node. Notice that the CategoryId is stored in the Value property 
        // of the node. This will make querying for items in a specific category easier when
        // the third-level nodes are created. 
        TreeNode newNode = new TreeNode();
        newNode.Text = row["CategoryName"].ToString(); 
        newNode.Value = row["CategoryID"].ToString();        

        // Set the PopulateOnDemand property to true so that the child nodes can be 
        // dynamically populated.
        newNode.PopulateOnDemand = true;

        // Set additional properties for the node.
        newNode.SelectAction = TreeNodeSelectAction.Expand;

        // Add the new node to the ChildNodes collection of the parent node.
        node.ChildNodes.Add(newNode);

      }

    }

  }

  void PopulateProducts(TreeNode node)
  {

    // Query for the products of the current category. These are the values
    // for the third-level nodes.
    DataSet ResultSet = RunQuery("Select ProductName From Products Where CategoryID=" + node.Value);

    // Create the third-level nodes.
    if(ResultSet.Tables.Count > 0)
    {

      // Iterate through and create a new node for each row in the query results.
      // Notice that the query results are stored in the table of the DataSet.
      foreach (DataRow row in ResultSet.Tables[0].Rows)
      {

        // Create the new node.
        TreeNode NewNode = new TreeNode(row["ProductName"].ToString());

        // Set the PopulateOnDemand property to false, because these are leaf nodes and
        // do not need to be populated.
        NewNode.PopulateOnDemand = false;

        // Set additional properties for the node.
        NewNode.SelectAction = TreeNodeSelectAction.None;

        // Add the new node to the ChildNodes collection of the parent node.
        node.ChildNodes.Add(NewNode);

      }

    }

  }

  DataSet RunQuery(String QueryString)
  {

    // Declare the connection string. This example uses Microsoft SQL Server 
    // and connects to the Northwind sample database.
    String ConnectionString = "server=localhost;database=NorthWind;Integrated Security=SSPI"; 

    SqlConnection DBConnection = new SqlConnection(ConnectionString);
    SqlDataAdapter DBAdapter;
    DataSet ResultsDataSet = new DataSet();

    try
    {

      // Run the query and create a DataSet.
      DBAdapter = new SqlDataAdapter(QueryString, DBConnection);
      DBAdapter.Fill(ResultsDataSet);

      // Close the database connection.
      DBConnection.Close();

    }
    catch(Exception ex)
    {

      // Close the database connection if it is still open.
      if(DBConnection.State == ConnectionState.Open)
      {
        DBConnection.Close();
      }

      Message.Text = "Unable to connect to the database.";

    }

    return ResultsDataSet;

  }

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>TreeView PopulateNodesFromClient Example</title>
</head>
<body>
    <form id="form1" runat="server">

      <h3>TreeView PopulateNodesFromClient Example</h3>

      <asp:TreeView id="LinksTreeView"
        Font-Names= "Arial"
        ForeColor="Blue"
        EnableClientScript="true"
        PopulateNodesFromClient="true"  
        OnTreeNodePopulate="PopulateNode"
        runat="server">

        <Nodes>

          <asp:TreeNode Text="Inventory" 
            SelectAction="Expand"  
            PopulateOnDemand="true"/>

        </Nodes>

      </asp:TreeView>

      <br /><br />

      <asp:Label id="Message" runat="server"/>

    </form>
  </body>
</html>



Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0
Mostrar: