SiteMapNodeCollection.Add Method (SiteMapNode)
Adds a single SiteMapNode object to the collection.
Assembly: System.Web (in System.Web.dll)
Parameters
- value
-
Type:
System.Web.SiteMapNode
The SiteMapNode to add to the SiteMapNodeCollection.
| Exception | Condition |
|---|---|
| ArgumentNullException | value is null. |
| NotSupportedException | 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() Function loads site navigation ' data from persistent storage into a DataTable. Dim siteMapData As DataTable siteMapData = LoadSiteMapData() ' Create a SiteMapNodeCollection. Dim nodes As New SiteMapNodeCollection() ' Create a SiteMapNode and add it to the collection. Dim tempNode As SiteMapNode Dim row As DataRow Dim index As Integer index = 0 While (index < siteMapData.Rows.Count) row = siteMapData.Rows(index) ' Create a node based on the data in the DataRow. tempNode = New SiteMapNode(SiteMap.Provider, row("Key").ToString(), row("Url").ToString()) ' Add the node to the collection. nodes.Add(tempNode) index = index + 1 End While
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 Overrides Function GetChildNodes(ByVal node As SiteMapNode) As SiteMapNodeCollection Dim children As New SiteMapNodeCollection() ' Iterate through the ArrayList and find all nodes that have the specified node as a parent. SyncLock Me Dim i As Integer For i = 0 To childParentRelationship.Count - 1 Dim de As DictionaryEntry = CType(childParentRelationship(i), DictionaryEntry) Dim nodeUrl As String = CType(de.Key, String) Dim parent As SiteMapNode = GetNode(childParentRelationship, nodeUrl) If Not (parent Is Nothing) AndAlso node.Url = parent.Url Then ' The SiteMapNode with the Url that corresponds to nodeUrl ' is a child of the specified node. Get the SiteMapNode for ' the nodeUrl. Dim child As SiteMapNode = FindSiteMapNode(nodeUrl) If Not (child Is Nothing) Then children.Add(CType(child, SiteMapNode)) Else Throw New Exception("ArrayLists not in sync.") End If End If Next i End SyncLock Return children End Function 'GetChildNodes Protected Overrides Function GetRootNodeCore() As SiteMapNode Return RootNode End Function ' GetRootNodeCore() ' Implement the GetParentNode method. Public Overrides Function GetParentNode(ByVal node As SiteMapNode) As SiteMapNode ' Check the childParentRelationship table and find the parent of the current node. ' If there is no parent, the current node is the RootNode. Dim parent As SiteMapNode = Nothing SyncLock Me ' Get the Value of the node in childParentRelationship parent = GetNode(childParentRelationship, node.Url) End SyncLock Return parent End Function 'GetParentNode
Available since 2.0