Partager via


Comment : ajouter un nœud SharePoint personnalisé à l'Explorateur de serveurs

Il est possible d'insérer des nœuds personnalisés sous le nœud Connexions SharePoint dans l'Explorateur de serveurs.Cela peut être utile si vous comptez afficher des composants SharePoint supplémentaires qui n'apparaissent pas par défaut dans l'Explorateur de serveurs.Pour plus d'informations, consultez Extension du nœud Connexions SharePoint dans l'Explorateur de serveurs.

Pour ajouter un nœud personnalisé, commencez par créer une classe qui définit le nouveau nœud.Créez ensuite une extension ayant pour effet d'ajouter le nœud comme un enfant d'un nœud existant.

Pour définir le nouveau nœud

  1. Créez un projet Bibliothèque de classes.

  2. Ajoutez des références aux assemblys suivants :

    • Microsoft.VisualStudio.SharePoint

    • Microsoft.VisualStudio.SharePoint.Explorer.Extensions

    • System.ComponentModel.Composition

    • System.Drawing

  3. Créez une classe qui implémente l'interface IExplorerNodeTypeProvider.

  4. Ajouter les attributs suivants à la classe :

  5. Dans votre implémentation de la méthode IExplorerNodeTypeProvider.InitializeType, utilisez les membres du paramètre typeDefinition pour définir le comportement du nouveau nœud.Ce paramètre est un objet IExplorerNodeTypeDefinition qui fournit l'accès aux événements définis dans l'interface IExplorerNodeEvents.

    L'exemple de code suivant montre comment définir un nouveau nœud.Cet exemple suppose que votre projet contient une icône nommée CustomChildNodeIcon sous forme de ressource incorporée.

    <Export(GetType(IExplorerNodeTypeProvider))> _
    <ExplorerNodeType(ExampleNodeTypeProvider.NodeTypeId)> _
    Friend Class ExampleNodeTypeProvider
        Implements IExplorerNodeTypeProvider
        Friend Const NodeTypeId As String = "Contoso.ServerExplorerNodeExample"
    
        Private Sub InitializeType(ByVal typeDefinition As IExplorerNodeTypeDefinition) _
            Implements IExplorerNodeTypeProvider.InitializeType
            typeDefinition.DefaultIcon = _
                My.Resources.CustomChildNodeIcon.ToBitmap()
            typeDefinition.IsAlwaysLeaf = True
        End Sub
    End Class
    
    [Export(typeof(IExplorerNodeTypeProvider))]
    [ExplorerNodeType(ExampleNodeTypeProvider.NodeTypeId)]
    internal class ExampleNodeTypeProvider : IExplorerNodeTypeProvider
    {
        internal const string NodeTypeId = "Contoso.ServerExplorerNodeExample";
    
        public void InitializeType(IExplorerNodeTypeDefinition typeDefinition)
        {
            typeDefinition.DefaultIcon =
                Properties.Resources.CustomChildNodeIcon.ToBitmap();
            typeDefinition.IsAlwaysLeaf = true;
        }
    }
    

Pour ajouter le nouveau nœud comme enfant d'un nœud existant

  1. Dans le même projet que votre définition de nœud, créez une classe permettant d'implémenter l'interface IExplorerNodeTypeExtension.

  2. Ajoutez l'attribut System.ComponentModel.Composition.ExportAttribute à la classe.Cet attribut permet à Visual Studio de découvrir et de charger votre implémentation IExplorerNodeTypeExtension.Passez le type IExplorerNodeTypeExtension au constructeur d'attribut.

  3. Ajoutez l'attribut ExplorerNodeTypeAttribute à la classe.Dans une extension de nœud, cet attribut spécifie l'identificateur de chaîne du type de nœud que vous souhaitez étendre.

    Pour spécifier les types de nœuds intégrés fournis par Visual Studio, passez l'une des valeurs d'énumération suivantes au constructeur d'attribut :

    • ExplorerNodeTypes : utilisez ces valeurs pour spécifier des nœuds de connexion de site (nœuds qui affichent les URL de site), des nœuds de site ou tous les autres nœuds parents de l'Explorateur de serveurs.

    • ExtensionNodeTypes : Utilisez ces valeurs pour spécifier l'un des nœuds intégrés qui représentent un composant individuel sur un site SharePoint, tel qu'un nœud qui représente une liste, un champ ou un type de contenu.

  4. Dans votre implémentation de la méthode Initialize, gérez l'événement NodeChildrenRequested du paramètre IExplorerNodeType.

  5. Dans le gestionnaire d'événements NodeChildrenRequested, ajoutez le nouveau nœud à la collection de nœuds enfants de l'objet Node exposé par le paramètre d'arguments d'événement.

    L'exemple de code suivant montre comment ajouter le nouveau nœud en tant qu'enfant du nœud du site SharePoint dans l'Explorateur de serveurs.

    <Export(GetType(IExplorerNodeTypeExtension))> _
    <ExplorerNodeType(ExplorerNodeTypes.SiteNode)> _
    Friend Class SiteNodeExtension
        Implements IExplorerNodeTypeExtension
    
        Private Sub Initialize(ByVal nodeType As IExplorerNodeType) _
            Implements IExplorerNodeTypeExtension.Initialize
            AddHandler nodeType.NodeChildrenRequested, AddressOf NodeChildrenRequested
        End Sub
    
        Private Sub NodeChildrenRequested(ByVal Sender As Object, ByVal e As ExplorerNodeEventArgs)
            e.Node.ChildNodes.Add(ExampleNodeTypeProvider.NodeTypeId, _
                "Custom Node", Nothing)
        End Sub
    End Class
    
    [Export(typeof(IExplorerNodeTypeExtension))]
    [ExplorerNodeType(ExplorerNodeTypes.SiteNode)]
    internal class SiteNodeExtension : IExplorerNodeTypeExtension
    {
        public void Initialize(IExplorerNodeType nodeType)
        {
            nodeType.NodeChildrenRequested += NodeChildrenRequested;
        }
    
        private void NodeChildrenRequested(object sender, ExplorerNodeEventArgs e)
        {
            e.Node.ChildNodes.Add(ExampleNodeTypeProvider.NodeTypeId,
                "Custom Node", null);
        }
    }
    

Exemple complet

L'exemple de code suivant fournit le code complet permettant de définir un nœud simple et de l'ajouter en tant qu'enfant du nœud du site SharePoint dans l'Explorateur de serveurs.

Imports System.ComponentModel.Composition
Imports Microsoft.VisualStudio.SharePoint
Imports Microsoft.VisualStudio.SharePoint.Explorer

Namespace Contoso.ServerExplorerExtension

    <Export(GetType(IExplorerNodeTypeProvider))> _
    <ExplorerNodeType(ExampleNodeTypeProvider.NodeTypeId)> _
    Friend Class ExampleNodeTypeProvider
        Implements IExplorerNodeTypeProvider
        Friend Const NodeTypeId As String = "Contoso.ServerExplorerNodeExample"

        Private Sub InitializeType(ByVal typeDefinition As IExplorerNodeTypeDefinition) _
            Implements IExplorerNodeTypeProvider.InitializeType
            typeDefinition.DefaultIcon = _
                My.Resources.CustomChildNodeIcon.ToBitmap()
            typeDefinition.IsAlwaysLeaf = True
        End Sub
    End Class

    <Export(GetType(IExplorerNodeTypeExtension))> _
    <ExplorerNodeType(ExplorerNodeTypes.SiteNode)> _
    Friend Class SiteNodeExtension
        Implements IExplorerNodeTypeExtension

        Private Sub Initialize(ByVal nodeType As IExplorerNodeType) _
            Implements IExplorerNodeTypeExtension.Initialize
            AddHandler nodeType.NodeChildrenRequested, AddressOf NodeChildrenRequested
        End Sub

        Private Sub NodeChildrenRequested(ByVal Sender As Object, ByVal e As ExplorerNodeEventArgs)
            e.Node.ChildNodes.Add(ExampleNodeTypeProvider.NodeTypeId, _
                "Custom Node", Nothing)
        End Sub
    End Class
End Namespace
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.SharePoint;
using Microsoft.VisualStudio.SharePoint.Explorer;

namespace Contoso.ServerExplorerExtension
{
    [Export(typeof(IExplorerNodeTypeProvider))]
    [ExplorerNodeType(ExampleNodeTypeProvider.NodeTypeId)]
    internal class ExampleNodeTypeProvider : IExplorerNodeTypeProvider
    {
        internal const string NodeTypeId = "Contoso.ServerExplorerNodeExample";

        public void InitializeType(IExplorerNodeTypeDefinition typeDefinition)
        {
            typeDefinition.DefaultIcon =
                Properties.Resources.CustomChildNodeIcon.ToBitmap();
            typeDefinition.IsAlwaysLeaf = true;
        }
    }

    [Export(typeof(IExplorerNodeTypeExtension))]
    [ExplorerNodeType(ExplorerNodeTypes.SiteNode)]
    internal class SiteNodeExtension : IExplorerNodeTypeExtension
    {
        public void Initialize(IExplorerNodeType nodeType)
        {
            nodeType.NodeChildrenRequested += NodeChildrenRequested;
        }

        private void NodeChildrenRequested(object sender, ExplorerNodeEventArgs e)
        {
            e.Node.ChildNodes.Add(ExampleNodeTypeProvider.NodeTypeId,
                "Custom Node", null);
        }
    }
}

Compilation du code

Cet exemple suppose que votre projet contient une icône nommée CustomChildNodeIcon sous forme de ressource incorporée.Cet exemple nécessite également des références aux assemblys suivants :

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

  • System.Drawing

Déploiement de l'extension

Pour déployer l'extension Explorateur de serveurs, créez un package d'extension Visual Studio (VSIX) pour l'assembly et tous les autres fichiers que vous voulez distribuer avec l'extension.Pour plus d'informations, consultez Déploiement d'extensions pour les outils SharePoint dans Visual Studio.

Voir aussi

Tâches

Procédure pas à pas : extension de l'Explorateur de serveurs pour afficher des WebParts

Concepts

Comment : étendre un nœud SharePoint dans l'Explorateur de serveurs

Autres ressources

Extension du nœud Connexions SharePoint dans l'Explorateur de serveurs