SiteMapProvider.GetChildNodes(SiteMapNode) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
派生クラスでオーバーライドされた場合は、特定の SiteMapNode の子ノードを取得します。
public:
abstract System::Web::SiteMapNodeCollection ^ GetChildNodes(System::Web::SiteMapNode ^ node);
public abstract System.Web.SiteMapNodeCollection GetChildNodes (System.Web.SiteMapNode node);
abstract member GetChildNodes : System.Web.SiteMapNode -> System.Web.SiteMapNodeCollection
Public MustOverride Function GetChildNodes (node As SiteMapNode) As SiteMapNodeCollection
パラメーター
- node
- SiteMapNode
すべての子ノードを取得する対象の SiteMapNode。
戻り値
指定した SiteMapNode の直接の子ノードが格納されている読み取り専用の SiteMapNodeCollection。子ノードが存在しない場合は、null
または空のコレクション。
例
次のコード例では、抽象SiteMapProviderクラスを実装するGetChildNodesクラスに メソッドを実装する方法を示します。 は SimpleTextSiteMapProvider
、階層的な親子関係を 1 つの Hashtable オブジェクトに格納し、すべての SiteMapNode オブジェクトを別のオブジェクトに格納します。 メソッドは GetChildNodes 、両方 ArrayList のオブジェクトを使用して逆引き参照を実行します。
このコード例は、SiteMapProvider クラスのために提供されている大規模な例の一部です。
// 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;
}
' 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
注釈
クラスから派生するクラスは、 SiteMapProvider 抽象 GetChildNodes メソッドを実装する必要があります。
注意 (実装者)
派生クラスで メソッドをオーバーライドする GetChildNodes(SiteMapNode) 場合は、子ノードでセキュリティ トリミングを実行し、返されるコレクションが読み取り専用であることを確認してください。 コレクションには、指定した node
の直接の子のみが含まれます。
適用対象
こちらもご覧ください
.NET