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
Créez un projet Bibliothèque de classes.
Ajoutez des références aux assemblys suivants :
Microsoft.VisualStudio.SharePoint
Microsoft.VisualStudio.SharePoint.Explorer.Extensions
System.ComponentModel.Composition
System.Drawing
Créez une classe qui implémente l'interface IExplorerNodeTypeProvider.
Ajouter les attributs suivants à la classe :
System.ComponentModel.Composition.ExportAttribute.Cet attribut permet à Visual Studio de découvrir et de charger votre implémentation IExplorerNodeTypeProvider.Communiquez le type IExplorerNodeTypeProvider au constructeur d'attribut.
ExplorerNodeTypeAttribute.Dans une définition de nœud, cet attribut spécifie l'identificateur de chaîne pour le nouveau nœud.Nous vous recommandons de respecter le format NomSociétéNomNœud pour garantir un identificateur unique à tous les nœuds.
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
Dans le même projet que votre définition de nœud, créez une classe permettant d'implémenter l'interface IExplorerNodeTypeExtension.
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.
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.
Dans votre implémentation de la méthode Initialize, gérez l'événement NodeChildrenRequested du paramètre IExplorerNodeType.
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