Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
GetParentNode Method

SiteMapProvider.GetParentNode Method

When overridden in a derived class, retrieves the parent node of a specific SiteMapNode object.

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

public abstract SiteMapNode GetParentNode(
	SiteMapNode node


Type: System.Web.SiteMapNode

The SiteMapNode for which to retrieve the parent node.

Return Value

Type: System.Web.SiteMapNode
A SiteMapNode that represents the parent of node; otherwise, null, if the SiteMapNode has no parent or security trimming is enabled and the parent node is not accessible to the current user.

GetParentNode might also return null if the parent node belongs to a different provider. In this case, use the ParentNode property of node instead.

The following code example demonstrates how to implement the GetParentNode method in a class that implements the abstract SiteMapProvider class. The SimpleTextSiteMapProvider stores the hierarchical parent/child relationship between SiteMapNode objects in an IList interface, such as an ArrayList object.

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

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0
© 2015 Microsoft