TreeView.TreeNodePopulate 이벤트

정의

PopulateOnDemand 컨트롤에서 TreeView 속성이 true로 설정된 노드를 확장할 때 발생합니다.

C#
public event System.Web.UI.WebControls.TreeNodeEventHandler TreeNodePopulate;

이벤트 유형

예제

다음 코드 예제를 사용 하는 방법에 설명 합니다 TreeNodePopulate 이벤트에서 노드를 채우는 TreeView 서버에서 동적으로 컨트롤입니다. 에 EnableClientScript 속성이 false 노드 확장 이벤트가 클라이언트에서 처리 되지 않도록 하려면.

ASP.NET(C#)

<%@ 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(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 xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>TreeView TreeNodePopulate Example</title>
</head>
<body>
    <form id="form1" runat="server">
    
      <h3>TreeView TreeNodePopulate Example</h3>
    
      <asp:TreeView id="LinksTreeView"
        Font-Names= "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>

설명

경우에 따라 정적으로 인해 데이터 크기 또는 사용자 입력에 따라 달라 지는 사용자 지정 콘텐츠 트리 구조는 미리 정의 실용적이 지 않습니다. 이 인해는 TreeView 컨트롤은 동적 노드 채우기를 지원 합니다. 경우는 PopulateOnDemand 노드에 대 한 속성이 true, 해당 노드에 노드를 확장 하는 경우 런타임 시 채워집니다.

노드를 동적으로 채우려면 먼저 설정 합니다 PopulateOnDemand 노드의 속성 true합니다. 다음에 대 한 이벤트 처리 메서드를 정의 합니다 TreeNodePopulate 이벤트는 노드를 프로그래밍 방식으로 채웁니다. 일반적인 이벤트 처리 메서드를 데이터 원본에서 노드 데이터를 검색, 데이터, 노드 구조를 배치 합니다 및 노드 구조를 추가 합니다 ChildNodes 채워지고 노드의 컬렉션입니다. 노드 구조를 추가 하 여 만들어집니다 TreeNode 개체는 ChildNodes 부모 노드의 컬렉션입니다.

참고

경우는 PopulateOnDemand 노드에 대 한 속성이 true, 노드를 동적으로 채울 수 있어야 합니다. 아래; 다른 노드를 선언적으로 중첩할 수 없습니다. 그렇지 않으면 페이지에서 오류가 발생 합니다.

지원 되는 브라우저 (Microsoft Internet Explorer 4.0-호환 되는 브라우저 및 이후 버전)도 활용할 수 클라이언트 쪽 노드의 채우기입니다. 이 기능을 사용 합니다 TreeView 서버로 다시 게시할 필요가 없도록 하는 해당 노드를 확장할 때 클라이언트에서 동적으로 노드를 채울 컨트롤입니다. 클라이언트 쪽 노드의 인구에 대 한 자세한 내용은 참조 하세요. PopulateNodesFromClient합니다.

이벤트를 처리 하는 방법에 대 한 자세한 내용은 참조 하세요. 이벤트 처리 및 발생합니다.

적용 대상

제품 버전
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

추가 정보