TreeView.PopulateNodesFromClient プロパティ
アセンブリ: System.Web (system.web.dll 内)

Dim instance As TreeView Dim value As Boolean value = instance.PopulateNodesFromClient instance.PopulateNodesFromClient = value
/** @property */ public boolean get_PopulateNodesFromClient () /** @property */ public void set_PopulateNodesFromClient (boolean value)
public function get PopulateNodesFromClient () : boolean public function set PopulateNodesFromClient (value : boolean)
クライアントからの要求に応じてツリー ノード データを設定する場合は true。それ以外の場合は false。既定値は true です。

データのサイズやカスタム コンテンツがユーザーの入力に依存する場合もあるため、ツリー構造をあらかじめ静的に定義するのは現実的ではありません。このため、TreeView コントロールはノードへの動的なデータ設定をサポートしています。ノードの PopulateOnDemand プロパティが true に設定されたノードは、実行時にノードが展開された時点でデータが設定されます。
必要に応じてノードにデータを設定する以外に、サポートされているクライアント ブラウザで直接ノードにデータを設定することもできます。PopulateNodesFromClient プロパティが true に設定されている場合、クライアントからサービスが呼び出されてツリー ノードにデータが設定されるため、サーバーへのポストバックが不要になります。それ以外の場合、TreeView コントロールはサーバーにポスト バックしてノードにデータを設定します。
![]() |
---|
PopulateNodesFromClient プロパティを true に設定するには、EnableClientScript プロパティも true に設定する必要があります。 |
クライアント上のノードにデータを設定するには、まず PopulateNodesFromClient プロパティを true に設定してから、ノードの PopulateOnDemand プロパティを true に設定します。次に、プログラムによってノードに値を設定する TreeNodePopulate イベントのイベント処理メソッドを定義します。通常、イベント処理メソッドはデータ ソースからノード データを取得して、データをノード構造に配置し、値が設定されるノードの ChildNodes コレクションにそのノード構造を追加します。TreeNode オブジェクトを親ノードの ChildNodes コレクションに追加すると、ノード構造が作成されます。

PopulateNodesFromClient プロパティを使用して、TreeView コントロールのノードのクライアント側でのデータ設定を有効にする方法を次のコード例に示します。クライアント側のノードへのデータ設定が有効な場合、サーバーにポスト バックしなくても、クライアントのノードに動的にデータが設定されます。
<%@ 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() 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> <body> <form runat="server"> <h3>TreeView PopulateNodesFromClient Example</h3> <asp:TreeView id="LinksTreeView" Font-Name= "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="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(); 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> <body> <form runat="server"> <h3>TreeView PopulateNodesFromClient Example</h3> <asp:TreeView id="LinksTreeView" Font-Name= "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 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.PopulateNodesFromClient プロパティを検索する場合は、下記のリンクをクリックしてください。

- TreeView.PopulateNodesFromClient プロパティのページへのリンク