SiteMapProvider.GetChildNodes Method
.NET Framework 3.0
When overridden in a derived class, retrieves the child nodes of a specific SiteMapNode.
Namespace: System.Web
Assembly: System.Web (in system.web.dll)
Assembly: System.Web (in system.web.dll)
public abstract SiteMapNodeCollection GetChildNodes ( SiteMapNode node )
public abstract function GetChildNodes ( node : SiteMapNode ) : SiteMapNodeCollection
Not applicable.
Parameters
- node
The SiteMapNode for which to retrieve all child nodes.
Return Value
A read-only SiteMapNodeCollection that contains the immediate child nodes of the specified SiteMapNode; otherwise, a null reference (Nothing in Visual Basic) or an empty collection, if no child nodes exist.Classes that derive from the SiteMapProvider class must implement the abstract GetChildNodes method.
Notes to Inheritors: When overriding the GetChildNodes method in a derived class, be sure to perform security trimming on the child nodes and ensure that the returned collection is read-only. The collection contains only the immediate children of the specified node.The following code example demonstrates how to implement the GetChildNodes method in a class that implements the abstract SiteMapProvider class. The SimpleTextSiteMapProvider stores the hierarchical parent/child relationships in one Hashtable object and all SiteMapNode objects in another. The GetChildNodes method performs a reverse-lookup using both ArrayList objects.
This code example is part of a larger example provided for the SiteMapProvider class.
// 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; }
Community Additions
ADD
Show: