GetParentNode Method

SiteMapProvider.GetParentNode Method (SiteMapNode)

 

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
)

Parameters

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.

System_CAPS_noteNote

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

.NET Framework
Available since 2.0
Return to top
Show:
© 2016 Microsoft