SiteMapProvider.GetChildNodes(SiteMapNode) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft beim Überschreiben in einer abgeleiteten Klasse die unmittelbar untergeordneten Knoten eines bestimmten SiteMapNode ab.
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
Parameter
- node
- SiteMapNode
Der SiteMapNode, für den alle unmittelbar untergeordneten Knoten abgerufen werden sollen.
Gibt zurück
Eine schreibgeschützte SiteMapNodeCollection, die die unmittelbar untergeordneten Knoten des angegebenen SiteMapNode enthält, andernfalls null
oder eine leere Auflistung, wenn keine unmittelbar untergeordneten Knoten vorhanden sind.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie die GetChildNodes -Methode in einer Klasse implementiert wird, die die abstrakte SiteMapProvider Klasse implementiert. Die SimpleTextSiteMapProvider
speichert die hierarchischen beziehungen zwischen übergeordneten und untergeordneten Elementen in einem Hashtable Objekt und allen SiteMapNode Objekten in einem anderen. Die GetChildNodes -Methode führt mithilfe beider ArrayList Objekte eine Reverse-Lookup-Suche aus.
Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die SiteMapProvider-Klasse bereitgestellt wird.
// 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
Hinweise
Klassen, die von der SiteMapProvider -Klasse abgeleitet sind, müssen die abstrakte GetChildNodes Methode implementieren.
Hinweise für Ausführende
Achten Sie beim Überschreiben der GetChildNodes(SiteMapNode) -Methode in einer abgeleiteten Klasse darauf, die Sicherheit auf den untergeordneten Knoten zu kürzen, und stellen Sie sicher, dass die zurückgegebene Auflistung schreibgeschützt ist. Die Auflistung enthält nur die unmittelbar untergeordneten Elemente des angegebenen node
.