SiteMapNodeCollection.Add Method (SiteMapNode)


Adds a single SiteMapNode object to the collection.

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

public virtual int Add(
	SiteMapNode value


Type: System.Web.SiteMapNode

The SiteMapNode to add to the SiteMapNodeCollection.

Return Value

Type: System.Int32

The index of the InnerList where the SiteMapNode was inserted.

Exception Condition

value is null.


The SiteMapNodeCollection is read-only.

You cannot add a SiteMapNode object to a read-only or fixed-size SiteMapNodeCollection collection. You can test whether a SiteMapNodeCollection is read-only by checking the IsReadOnly property.

This section contains two code examples. The first code example demonstrates how to create a new SiteMapNodeCollection collection and add elements to it. The second code example demonstrates how to add elements to a custom site map provider.

The following code example demonstrates how to use the SiteMapNodeCollection constructor to create a new SiteMapNodeCollection, and then add elements to it with the Add method.

// The LoadSiteMapData() method loads site navigation
// data from persistent storage into a DataTable.
DataTable siteMap = LoadSiteMapData();

// Create a SiteMapNodeCollection.
SiteMapNodeCollection nodes = new SiteMapNodeCollection();

// Create a SiteMapNode and add it to the collection.
SiteMapNode tempNode;
DataRow row;
int index = 0;

while (index < siteMap.Rows.Count)

    row = siteMap.Rows[index];

    // Create a node based on the data in the DataRow.
    tempNode = new SiteMapNode(SiteMap.Provider,

    // Add the node to the collection.

The following code example demonstrates a custom site map provider implementation and shows how to use the SiteMapNodeCollection constructor to create a new SiteMapNodeCollection and add elements to the SiteMapNodeCollection with the Add method.

This code example is part of a larger code 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