Compartir a través de


del método SPNavigationNodeCollection.Add

Agrega un objeto SPNavigationNode después del nodo especificado de la colección.

Espacio de nombres:  Microsoft.SharePoint.Navigation
Ensamblado:  Microsoft.SharePoint (en Microsoft.SharePoint.dll)

Sintaxis

'Declaración
Public Function Add ( _
    node As SPNavigationNode, _
    previousNode As SPNavigationNode _
) As SPNavigationNode
'Uso
Dim instance As SPNavigationNodeCollection
Dim node As SPNavigationNode
Dim previousNode As SPNavigationNode
Dim returnValue As SPNavigationNode

returnValue = instance.Add(node, previousNode)
public SPNavigationNode Add(
    SPNavigationNode node,
    SPNavigationNode previousNode
)

Parámetros

  • previousNode
    Tipo: Microsoft.SharePoint.Navigation.SPNavigationNode

    Especifica la posición en la colección de nodos en el que se va a agregar el nuevo objeto de nodo mediante la identificación del nodo anterior a la posición donde se inserta el nuevo nodo.

Valor devuelto

Tipo: Microsoft.SharePoint.Navigation.SPNavigationNode
El nodo de navegación que se ha agregado, ahora totalmente inicializado.

Comentarios

Un objeto SPNavigationNode no se inicializa completamente hasta que se ha agregado a una colección. Si el objeto todavía no es un miembro de una colección, propiedades de solo lectura como Id y ParentId devuelven una referencia null (Nothing en Visual Basic).

Ejemplos

El ejemplo siguiente muestra cómo agregar un vínculo en una posición específica en el menú Inicio rápido. El ejemplo forma parte de un proyecto más grande que usa una característica con ámbito de Web para crear una biblioteca de documentos con el nombre de notas de la reunión. La característica incluye un controlador de eventos que implementa la clase SPFeatureReceiver , y en la característica del receptor FeatureActivated consiste código para crear la biblioteca de notas de la reunión y agregar un vínculo a ella en el encabezado de las bibliotecas en el menú Inicio rápido. Si hay un vínculo a la biblioteca de documentos compartidos, se agrega el nuevo vínculo inmediatamente después de ella. Si el menú no tiene un vínculo a documentos compartidos, el código hace que el vínculo para notas de la reunión el primer elemento por debajo del encabezado de bibliotecas .

Nota

El código de ejemplo usa varios tipos sin calificación. Para compilar correctamente el código, la clase de receptor de característica debe importar los espacios de nombres siguientes:

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    // Get the web site where the feature is activated.
    SPWeb web = properties.Feature.Parent as SPWeb;
    if (web == null)
        return;

    // Get the Meeting Notes document library.
    SPList meetingNotes = web.Lists.TryGetList("Meeting Notes");
    if (meetingNotes == null)
    {
        // Create the library if it does not exist.
        Guid listId = web.Lists.Add("Meeting Notes", "An archive for meeting notes.", SPListTemplateType.DocumentLibrary);
        meetingNotes = web.Lists.GetList(listId, false);
    }

    // Check for an existing Quick Launch node for Meeting Notes.
    SPNavigationNode meetingNotesNode = web.Navigation.GetNodeByUrl(meetingNotes.DefaultViewUrl);

    // If a Meeting Notes node exists on Quick Launch, nothing more to do.
    if (meetingNotesNode != null)
        return;

    // Still here, so create a node for Meeting Notes.
    meetingNotesNode = new SPNavigationNode(meetingNotes.Title, meetingNotes.DefaultViewUrl);

    // Get the Libraries heading.
    SPNavigationNode librariesHeading = web.Navigation.GetNodeById((int)SPQuickLaunchHeading.Documents);

    // If the Libraries heading does not exist or it exists but has no items below it,
    // then Meeting Notes will be the first item.
    if (librariesHeading == null || librariesHeading.Children.Count == 0)
    {
        web.Navigation.AddToQuickLaunch(meetingNotesNode, SPQuickLaunchHeading.Documents);
        return;
    }

    // The Libraries heading exists. Now check for an item linking to Shared Documents.
    // If a node for Shared Documents exists, Meeting Notes will go after it.
    SPList sharedDocs = web.Lists.TryGetList("Shared Documents");
    SPNavigationNode sharedDocsNode = null;
    if (sharedDocs != null)
        sharedDocsNode = librariesHeading
            .Children
            .Cast<SPNavigationNode>()
            .FirstOrDefault(n => n.Url == sharedDocs.DefaultViewUrl);

    // A node for Shared Documents does not exist. Make Meeting Notes the first item.
    if (sharedDocsNode == null)
    {
        librariesHeading.Children.AddAsFirst(meetingNotesNode);
        return;
    }

    // A node for Shared Documents exists. Place Meeting Notes after it.
    librariesHeading.Children.Add(meetingNotesNode, sharedDocsNode);

    web.Dispose();
}
Public Overrides Sub FeatureActivated(ByVal properties As SPFeatureReceiverProperties)

    'Get the web site where the feature is activated.
    Dim web As SPWeb = TryCast(properties.Feature.Parent, SPWeb)
    If web Is Nothing Then
        Return
    End If

    ' Get the Meeting Notes document library.
    Dim meetingNotes As SPList = web.Lists.TryGetList("Meeting Notes")
    If meetingNotes Is Nothing Then

        ' Create the library if it does not exist.
        Dim listId As Guid = web.Lists.Add("Meeting Notes", "An archive for meeting notes.", SPListTemplateType.DocumentLibrary)
        meetingNotes = web.Lists.GetList(listId, False)

    End If

    ' Check for an existing Quick Launch node for Meeting Notes.
    Dim meetingNotesNode As SPNavigationNode = web.Navigation.GetNodeByUrl(meetingNotes.DefaultViewUrl)

    ' If a Meeting Notes node exists on Quick Launch, nothing more to do.
    If meetingNotesNode IsNot Nothing Then
        Return
    End If

    ' Still here, so create a node for Meeting Notes.
    meetingNotesNode = New SPNavigationNode(meetingNotes.Title, meetingNotes.DefaultViewUrl)

    ' Get the Libraries heading.
    Dim librariesHeading As SPNavigationNode = web.Navigation.GetNodeById(CInt(SPQuickLaunchHeading.Documents))

    ' If the Libraries heading does not exist or it exists but has no items below it,
    ' then Meeting Notes will be the first item.
    If librariesHeading Is Nothing OrElse librariesHeading.Children.Count = 0 Then
        web.Navigation.AddToQuickLaunch(meetingNotesNode, SPQuickLaunchHeading.Documents)
        Return
    End If

    ' The Libraries heading exists. Now check for an item linking to Shared Documents.
    ' If a node for Shared Documents exists, Meeting Notes will go after it.
    Dim sharedDocs As SPList = web.Lists.TryGetList("Shared Documents")
    Dim sharedDocsNode As SPNavigationNode = Nothing
    If sharedDocs IsNot Nothing Then
        sharedDocsNode = librariesHeading.Children.Cast(Of SPNavigationNode)().FirstOrDefault( _
            Function(n) n.Url = sharedDocs.DefaultViewUrl)
    End If

    ' A node for Shared Documents does not exist. Make Meeting Notes the first item.
    If sharedDocsNode Is Nothing Then
        librariesHeading.Children.AddAsFirst(meetingNotesNode)
        Return
    End If

    ' A node for Shared Documents exists. Place Meeting Notes after it.
    librariesHeading.Children.Add(meetingNotesNode, sharedDocsNode)

    web.Dispose()
End Sub

Vea también

Referencia

clase SPNavigationNodeCollection

Miembros SPNavigationNodeCollection

Espacio de nombres Microsoft.SharePoint.Navigation

Microsoft.SharePoint.Navigation.SPNavigationNode

SPNavigationNode.Update

Move(SPNavigationNodeCollection, SPNavigationNode)