SiteMapProvider.GetChildNodes(SiteMapNode) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Při přepsání v odvozené třídě načte podřízené uzly konkrétního 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
Parametry
- node
- SiteMapNode
Pro SiteMapNode které se mají načíst všechny podřízené uzly.
Návraty
Jen pro čtení SiteMapNodeCollection , který obsahuje bezprostřední podřízené uzly zadaného SiteMapNode; jinak nebo prázdnou kolekci, null
pokud neexistují žádné podřízené uzly.
Příklady
Následující příklad kódu ukazuje, jak implementovat metodu GetChildNodes ve třídě, která implementuje abstraktní SiteMapProvider třídu. Ukládá SimpleTextSiteMapProvider
hierarchické vztahy nadřazeného/podřízeného objektu do jednoho Hashtable objektu a všech SiteMapNode objektů v jiném. Metoda GetChildNodes provádí zpětné vyhledávání pomocí obou ArrayList objektů.
Tento příklad kódu je součástí většího příkladu zadaného SiteMapProvider pro třídu.
// 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
Poznámky
Třídy odvozené z SiteMapProvider třídy musí implementovat abstraktní GetChildNodes metodu.
Poznámky pro implementátory
Při přepsání GetChildNodes(SiteMapNode) metody v odvozené třídě nezapomeňte provést oříznutí zabezpečení na podřízených uzlech a zajistit, aby vrácená kolekce byla jen pro čtení. Kolekce obsahuje pouze bezprostřední podřízené položky zadaného node
souboru .