SiteMapNodeCollection.Add(SiteMapNode) SiteMapNodeCollection.Add(SiteMapNode) SiteMapNodeCollection.Add(SiteMapNode) SiteMapNodeCollection.Add(SiteMapNode) Method

Определение

Добавляет один объект SiteMapNode в коллекцию.Adds a single SiteMapNode object to the collection.

public:
 virtual int Add(System::Web::SiteMapNode ^ value);
public virtual int Add (System.Web.SiteMapNode value);
abstract member Add : System.Web.SiteMapNode -> int
override this.Add : System.Web.SiteMapNode -> int
Public Overridable Function Add (value As SiteMapNode) As Integer

Параметры

value
SiteMapNode SiteMapNode SiteMapNode SiteMapNode

Объект SiteMapNode, добавляемый в список SiteMapNodeCollection.The SiteMapNode to add to the SiteMapNodeCollection.

Возвраты

Индекс коллекции InnerList, в которую вставлен объект SiteMapNode.The index of the InnerList where the SiteMapNode was inserted.

Исключения

Свойство value имеет значение null.value is null.

Объект SiteMapNodeCollection доступен только для чтения.The SiteMapNodeCollection is read-only.

Примеры

Этот раздел содержит два примера кода.This section contains two code examples. В первом примере кода показано, как создать новую SiteMapNodeCollection коллекцию и добавить в нее элементы.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.

В следующем примере кода показано, как с помощью SiteMapNodeCollection конструктора создать новый SiteMapNodeCollectionобъект, а затем добавить в него Add элементы с помощью метода.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,
                                row["Key"].ToString(),
                                row["Url"].ToString());

    // Add the node to the collection.
    nodes.Add(tempNode);
    ++index;
}
' 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

В следующем примере кода демонстрируется реализация пользовательского SiteMapNodeCollection поставщика карт узла и демонстрируется использование конструктора для создания нового SiteMapNodeCollection элемента и добавления в него SiteMapNodeCollection Add элементов с помощью метода.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.

Этот пример кода является частью более крупного примера кода, SiteMapProvider предоставленного для класса.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);
        }
        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;
}
' 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

Комментарии

Нельзя добавить SiteMapNode объект в коллекцию, доступную только для чтения или фиксированный SiteMapNodeCollection размер.You cannot add a SiteMapNode object to a read-only or fixed-size SiteMapNodeCollection collection. Проверить, доступен ли объект SiteMapNodeCollection только для чтения, можно с помощью IsReadOnly проверки свойства.You can test whether a SiteMapNodeCollection is read-only by checking the IsReadOnly property.

Применяется к

Дополнительно