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

TreeView.TreeNodePopulate, événement

Remarque : cet événement est nouveau dans le .NET Framework version 2.0.

Se produit lorsqu'un nœud dont la propriété PopulateOnDemand a la valeur true est développé dans le contrôle TreeView.

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

public event TreeNodeEventHandler TreeNodePopulate
/** @event */
public void add_TreeNodePopulate (TreeNodeEventHandler value)

/** @event */
public void remove_TreeNodePopulate (TreeNodeEventHandler value)

JScript prend en charge l'utilisation d'événements mais pas la déclaration de nouveaux événements.

Il n'est pas toujours facile de prédéfinir statiquement l'arborescence en raison de la taille des données ou du contenu personnalisé qui dépend des entrées d'utilisateur. De ce fait, le contrôle TreeView prend en charge le remplissage dynamique de nœuds. Lorsque la propriété PopulateOnDemand pour un nœud a la valeur true, ce nœud est rempli au moment de l'exécution lorsqu'il est développé.

Pour remplir un nœud dynamiquement, affectez tout d'abord true à la propriété PopulateOnDemand pour le nœud. Définissez ensuite une méthode de gestion d'événements pour l'événement TreeNodePopulate qui remplit le nœud par programme. Une méthode de gestion d'événements typique récupère des données de nœud à partir d'une source de données, place les données dans une structure de nœud, puis ajoute la structure de nœud à la collection ChildNodes du nœud en cours de remplissage. Une structure de nœud est créée en ajoutant des objets TreeNode à la collection ChildNodes d'un nœud parent.

RemarqueRemarque

Lorsque la propriété PopulateOnDemand pour un nœud a la valeur true, le nœud doit être rempli dynamiquement. Vous ne pouvez pas imbriquer de manière déclarative un autre nœud au-dessous de celui-ci ; sinon, une erreur se produira sur la page.

Les navigateurs pris en charge (navigateurs compatibles avec Microsoft Internet Explorer versions 4.0 et ultérieures) peuvent également tirer parti du remplissage de nœuds côté client. Lorsqu'il est activé, il permet au contrôle TreeView de remplir dynamiquement un nœud sur le client lorsque ce nœud est développé, ce qui évite d'avoir recours à la publication sur le serveur. Pour plus d'informations sur le remplissage de nœuds côté client, consultez PopulateNodesFromClient.

Pour plus d'informations sur la gestion des événements, consultez Consommation d'événements.

L'exemple de code suivant montre comment utiliser l'événement TreeNodePopulate pour remplir dynamiquement les nœuds dans le contrôle TreeView sur le serveur. Remarquez que la propriété EnableClientScript a la valeur false pour empêcher des événements de nœud en développement d'être géré sur le client.


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

<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(row["CategoryName"].ToString(), 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>
  <body>
    <form runat="server">
    
      <h3>TreeView TreeNodePopulate Example</h3>
    
      <asp:TreeView id="LinksTreeView"
        Font-Name= "Arial"
        ForeColor="Blue"
        EnableClientScript="false" 
        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 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: