GetChildNodes Method

SiteMapProvider.GetChildNodes Method (SiteMapNode)


When overridden in a derived class, retrieves the child nodes of a specific SiteMapNode.

Namespace:   System.Web
Assembly:  System.Web (in System.Web.dll)

public abstract SiteMapNodeCollection GetChildNodes(
	SiteMapNode node


Type: System.Web.SiteMapNode

The SiteMapNode for which to retrieve all child nodes.

Return Value

Type: System.Web.SiteMapNodeCollection

A read-only SiteMapNodeCollection that contains the immediate child nodes of the specified SiteMapNode; otherwise, null 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);
          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;

.NET Framework
Available since 2.0
Return to top
© 2015 Microsoft