TreeNodeSelectAction 枚举   
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示在选定 TreeView 控件中的节点时将引发的事件。
public enum class TreeNodeSelectActionpublic enum TreeNodeSelectActiontype TreeNodeSelectAction = Public Enum TreeNodeSelectAction- 继承
字段
| 名称 | 值 | 说明 | 
|---|---|---|
| Expand | 1 | 在选定节点时引发 TreeNodeExpanded 事件。 | 
| None | 3 | 在选定节点时不引发任何事件。 | 
| Select | 0 | 在选定节点时引发 SelectedNodeChanged 事件。 | 
| SelectExpand | 2 | 在选定节点时引发 SelectedNodeChanged 和 TreeNodeExpanded 两个事件。 | 
示例
以下示例演示如何使用 TreeNodeSelectAction 枚举来表示在 控件中 TreeView 单击节点时引发的事件:
<%@ 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>
<%@ Page Language="VB" %>
<%@ 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">
  Sub PopulateNode(ByVal sender As Object, ByVal e As TreeNodeEventArgs)
    ' Call the appropriate method to populate a node at a particular level.
    Select Case e.Node.Depth
      Case 0
        ' Populate the first-level nodes.
        PopulateCategories(e.Node)
      Case 1
        ' Populate the second-level nodes.
        PopulateProducts(e.Node)
      Case Else
        ' Do nothing.
    End Select
  End Sub
  Sub PopulateCategories(ByVal node As TreeNode)
    ' Query for the product categories. These are the values
    ' for the second-level nodes.
    Dim ResultSet As DataSet = RunQuery("Select CategoryID, CategoryName From Categories")
    ' Create the second-level nodes.
    If ResultSet.Tables.Count > 0 Then
      ' 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.
      Dim row As DataRow
      For Each 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. 
        Dim newNode As TreeNode = 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)
      Next
    End If
  End Sub
  Sub PopulateProducts(ByVal node As TreeNode)
    ' Query for the products of the current category. These are the values
    ' for the third-level nodes.
    Dim ResultSet As DataSet = RunQuery("Select ProductName From Products Where CategoryID=" & node.Value)
    ' Create the third-level nodes.
    If ResultSet.Tables.Count > 0 Then
      ' 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.
      Dim row As DataRow
      For Each row In ResultSet.Tables(0).Rows
        ' Create the new node.
        Dim NewNode As TreeNode = 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)
      Next
    End If
  End Sub
  Function RunQuery(ByVal QueryString As String) As DataSet
    ' Declare the connection string. This example uses Microsoft SQL Server 
    ' and connects to the Northwind sample database.
    Dim ConnectionString As String = "server=localhost;database=NorthWind;Integrated Security=SSPI"
    Dim DBConnection As SqlConnection = New SqlConnection(ConnectionString)
    Dim DBAdapter As SqlDataAdapter
    Dim ResultsDataSet As DataSet = 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 ex As Exception
      ' Close the database connection if it is still open.
      If DBConnection.State = ConnectionState.Open Then
        DBConnection.Close()
      End If
      Message.Text = "Unable to connect to the database."
    End Try
    Return ResultsDataSet
  End Function
</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>
注解
当 属性 TreeNode.NavigateUrl 设置为空字符串 (“) 以外的值时,单击节点将导航到指定的 URL。 如果 属性 TreeNode.NavigateUrl 设置为空字符串,则单击节点会导致回发。 属性 TreeNode.SelectAction 确定在回发时引发的事件。 默认情况下,引发 TreeNode.Select 事件。 如果设置了 属性, TreeNode.NavigateUrl 则不会引发任何事件。
注意
对于TreeView.HoverNodeStyle其属性设置为 None 值的节点TreeNode.SelectAction,不会呈现 属性。