Export (0) Print
Expand All

SiteMapProvider.GetChildNodes Method

Note: This method is new in the .NET Framework version 2.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)

public abstract SiteMapNodeCollection GetChildNodes (
	SiteMapNode node
)
public abstract SiteMapNodeCollection GetChildNodes (
	SiteMapNode node
)
public abstract function GetChildNodes (
	node : SiteMapNode
) : SiteMapNodeCollection

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;
}

Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0

Community Additions

ADD
Show:
© 2014 Microsoft