다음을 통해 공유


SiteMapNodeCollection.Add(SiteMapNode) 메서드

정의

컬렉션에 단일 SiteMapNode 개체를 SiteMapNodeCollection 추가합니다.

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에 추가할 SiteMapNodeCollection입니다.

반환

Int32

InnerList가 삽입된 SiteMapNode의 인덱스입니다.

예외

value이(가) null인 경우

SiteMapNodeCollection이 읽기 전용인 경우

예제

이 섹션에는 두 코드 예제가 있습니다. 첫 번째 코드 예제에서는 새로 만드는 방법을 보여 줍니다 SiteMapNodeCollection 컬렉션 요소를 추가 합니다. 두 번째 코드 예제에는 요소는 사용자 지정 사이트 맵 공급자를 추가 하는 방법을 보여 줍니다.

다음 코드 예제를 사용 하는 방법에 설명 합니다 SiteMapNodeCollection 새 생성자 SiteMapNodeCollection, 다음 요소를 사용 하 여 추가 Add 메서드.

// 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 메서드.

이 코드 예제는 일부에 대해 제공 된 더 큰 코드 예제는 SiteMapProvider 클래스입니다.

// 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 컬렉션입니다. 테스트할 수 있는지 여부를 SiteMapNodeCollection 읽기 전용인 지 확인 하 여는 IsReadOnly 속성.

적용 대상

추가 정보