TreeView.TreeNodePopulate イベント
アセンブリ: System.Web (system.web.dll 内)

Dim instance As TreeView Dim handler As TreeNodeEventHandler AddHandler instance.TreeNodePopulate, handler
public: event TreeNodeEventHandler^ TreeNodePopulate { void add (TreeNodeEventHandler^ value); void remove (TreeNodeEventHandler^ value); }

データのサイズやカスタム コンテンツがユーザーの入力に依存する場合もあるため、ツリー構造をあらかじめ静的に定義するのは現実的ではありません。このため、TreeView コントロールはノードへの動的なデータ設定をサポートしています。ノードの PopulateOnDemand プロパティが true に設定されたノードは、実行時にノードが展開された時点でデータが設定されます。
ノードに動的に値を代入するには、まずノードの PopulateOnDemand プロパティを true に設定します。次に、プログラムによってノードに値を設定する TreeNodePopulate イベントのイベント処理メソッドを定義します。通常、イベント処理メソッドはデータ ソースからノード データを取得して、データをノード構造に配置し、値が設定されるノードの ChildNodes コレクションにそのノード構造を追加します。TreeNode オブジェクトを親ノードの ChildNodes コレクションに追加すると、ノード構造が作成されます。
![]() |
---|
ノードの PopulateOnDemand プロパティが true に設定されている場合、ノードには動的に値が設定される必要があります。ノードの下に別のノードを宣言によって入れ子にすることはできません。それ以外の場合、ページでエラーが発生します。 |
サポートされるブラウザ (Microsoft Internet Explorer Version 4.0 以降と互換性があるブラウザ) では、クライアント側のノードへのデータ設定も利用できます。クライアント側のノード ポピュレーションを有効にすると、ノードの展開時に TreeView コントロールを使用してクライアントのノードに値を動的に代入でき、サーバーにポストバックする必要がなくなります。クライアント側のノードへのデータ設定の詳細については、PopulateNodesFromClient のトピックを参照してください。

TreeNodePopulate イベントを使用して、サーバー上の TreeView コントロールのノードに値を動的に設定する方法を次のコード例に示します。EnableClientScript プロパティを false に設定して、展開するノードのイベントがクライアントで処理されないようにします。
<%@ Page Language="VB" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %> <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(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) 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> <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>
<%@ 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 Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からTreeView.TreeNodePopulate イベントを検索する場合は、下記のリンクをクリックしてください。

- TreeView.TreeNodePopulate イベントのページへのリンク