SiteMapProvider.GetChildNodes メソッド
アセンブリ: System.Web (system.web.dll 内)

Dim instance As SiteMapProvider Dim node As SiteMapNode Dim returnValue As SiteMapNodeCollection returnValue = instance.GetChildNodes(node)
戻り値
指定した SiteMapNode の直接の子ノードが格納されている読み取り専用の SiteMapNodeCollection。子ノードが存在しない場合は、null 参照 (Visual Basic では Nothing) または空のコレクション。

SiteMapProvider クラスの派生クラスには、GetChildNodes 抽象メソッドが実装されている必要があります。
継承時の注意 派生クラスで GetChildNodes メソッドをオーバーライドする場合、子ノードでセキュリティ トリミングを実行し、返されるコレクションを読み取り専用にしてください。コレクションには、指定した node の直下の子のみが格納されます。
SiteMapProvider 抽象クラスを実装するクラスに GetChildNodes メソッドを実装する方法を次のコード例に示します。SimpleTextSiteMapProvider は、親子関係の階層とすべての SiteMapNode オブジェクトとを、それぞれ別個の Hashtable オブジェクトに格納します。GetChildNodes メソッドは、両方の ArrayList オブジェクトを使用して逆検索を実行します。
このコード例は、SiteMapProvider クラスのトピックで取り上げているコード例の一部分です。
' Implement the GetChildNodes method. Public Overrides Function GetChildNodes(ByVal node As SiteMapNode) As SiteMapNodeCollection Dim children As New SiteMapNodeCollection() ' Iterate through the ArrayList and find all nodes that have the specified node as a parent. SyncLock Me Dim i As Integer For i = 0 To childParentRelationship.Count - 1 Dim de As DictionaryEntry = CType(childParentRelationship(i), DictionaryEntry) Dim nodeUrl As String = CType(de.Key, String) Dim parent As SiteMapNode = GetNode(childParentRelationship, nodeUrl) If Not (parent Is Nothing) AndAlso node.Url = parent.Url Then ' The SiteMapNode with the Url that corresponds to nodeUrl ' is a child of the specified node. Get the SiteMapNode for ' the nodeUrl. Dim child As SiteMapNode = FindSiteMapNode(nodeUrl) If Not (child Is Nothing) Then children.Add(CType(child, SiteMapNode)) Else Throw New Exception("ArrayLists not in sync.") End If End If Next i End SyncLock Return children End Function 'GetChildNodes Protected Overrides Function GetRootNodeCore() As SiteMapNode Return RootNode End Function ' GetRootNodeCore() ' Implement the GetParentNode method. Public Overrides Function GetParentNode(ByVal node As SiteMapNode) As SiteMapNode ' Check the childParentRelationship table and find the parent of the current node. ' If there is no parent, the current node is the RootNode. Dim parent As SiteMapNode = Nothing SyncLock Me ' Get the Value of the node in childParentRelationship parent = GetNode(childParentRelationship, node.Url) End SyncLock Return parent End Function 'GetParentNode
// Implement the GetChildNodes method. public override SiteMapNodeCollection GetChildNodes(SiteMapNode node) { SiteMapNodeCollection children = new SiteMapNodeCollection(); // Iterate through the ArrayList and find all nodes that have the specified node as a parent. lock (this) { for (int i = 0; i < childParentRelationship.Count; i++) { string nodeUrl = ((DictionaryEntry)childParentRelationship[i]).Key as string; SiteMapNode parent = GetNode(childParentRelationship, nodeUrl); if (parent != null && node.Url == parent.Url) { // The SiteMapNode with the Url that corresponds to nodeUrl // is a child of the specified node. Get the SiteMapNode for // the nodeUrl. SiteMapNode child = FindSiteMapNode(nodeUrl); if (child != null) { children.Add(child as SiteMapNode); } else { throw new Exception("ArrayLists not in sync."); } } } } return children; } protected override SiteMapNode GetRootNodeCore() { return RootNode; } // Implement the GetParentNode method. public override SiteMapNode GetParentNode(SiteMapNode node) { // Check the childParentRelationship table and find the parent of the current node. // If there is no parent, the current node is the RootNode. SiteMapNode parent = null; lock (this) { // Get the Value of the node in childParentRelationship parent = GetNode(childParentRelationship, node.Url); } return parent; }

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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- SiteMapProvider.GetChildNodes メソッドのページへのリンク