Partager via


Comment : obtenir des données pour un nœud SharePoint intégré dans l'Explorateur de serveurs

Pour chaque nœud SharePoint intégré dans l'Explorateur de serveurs, vous pouvez obtenir des données pour le composant SharePoint sous-jacent que le nœud représente.Pour plus d'informations, consultez Extension du nœud Connexions SharePoint dans l'Explorateur de serveurs.

Exemple

L'exemple de code suivant montre comment obtenir des données pour la liste SharePoint sous-jacente qu'un nœud de liste représente dans l'Explorateur de serveurs.Par défaut, les nœuds de liste ont un élément de menu contextuel Afficher dans le navigateur sur lequel vous pouvez cliquer pour ouvrir les listes dans un navigateur Web.Cet exemple étend les nœuds de liste en ajoutant un élément de menu contextuel Afficher dans Visual Studio, qui ouvre directement les listes dans Visual Studio.Le code accède aux données de liste pour le nœud afin d'obtenir l'URL de la liste à ouvrir dans Visual Studio.

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

Namespace Contoso.ServerExplorerExtension
    <Export(GetType(IExplorerNodeTypeExtension))> _
    <ExplorerNodeType(ExtensionNodeTypes.ListNode)> _
    Friend Class ListNodeExtension
        Implements IExplorerNodeTypeExtension

        Private projectService As ISharePointProjectService
        Private dteObject As EnvDTE.DTE

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

        Private Sub NodeMenuItemsRequested(ByVal Sender As Object, ByVal e As ExplorerNodeMenuItemsRequestedEventArgs)
            Dim menuItem = e.MenuItems.Add("View in Visual Studio")
            AddHandler menuItem.Click, AddressOf MenuItemClick
        End Sub

        Private Sub MenuItemClick(ByVal Sender As Object, ByVal e As MenuItemEventArgs)

            ' Get the data for the list node.
            Dim node As IExplorerNode = CType(e.Owner, IExplorerNode)
            Dim nodeInfo As IListNodeInfo = node.Annotations.GetValue(Of IListNodeInfo)()

            If dteObject Is Nothing Then

                If projectService Is Nothing Then
                    projectService = CType(node.ServiceProvider.GetService(GetType(ISharePointProjectService)), 
                        ISharePointProjectService)
                End If
                dteObject = CType(projectService.ServiceProvider.GetService(GetType(EnvDTE.DTE)), EnvDTE.DTE)
            End If

            dteObject.ItemOperations.Navigate(nodeInfo.DefaultViewUrl.ToString(),
                EnvDTE.vsNavigateOptions.vsNavigateOptionsNewWindow)
        End Sub
    End Class
End Namespace
using System.ComponentModel.Composition;
using Microsoft.VisualStudio.SharePoint;
using Microsoft.VisualStudio.SharePoint.Explorer;
using Microsoft.VisualStudio.SharePoint.Explorer.Extensions;

namespace Contoso.ServerExplorerExtension
{
    [Export(typeof(IExplorerNodeTypeExtension))]
    [ExplorerNodeType(ExtensionNodeTypes.ListNode)]
    internal class ListNodeExtension : IExplorerNodeTypeExtension
    {
        private ISharePointProjectService projectService;
        private EnvDTE.DTE dteObject;

        public void Initialize(IExplorerNodeType nodeType)
        {
            nodeType.NodeMenuItemsRequested += nodeType_NodeMenuItemsRequested;
        }

        void nodeType_NodeMenuItemsRequested(object sender, ExplorerNodeMenuItemsRequestedEventArgs e)
        {
            IMenuItem menuItem = e.MenuItems.Add("View in Visual Studio");
            menuItem.Click += menuItem_Click;
        }

        void menuItem_Click(object sender, MenuItemEventArgs e)
        {
            // Get the data for the list node.
            IExplorerNode node = (IExplorerNode)e.Owner;
            IListNodeInfo nodeInfo = node.Annotations.GetValue<IListNodeInfo>();

            if (dteObject == null)
            {
                if (projectService == null)
                {
                    projectService = (ISharePointProjectService)node.ServiceProvider.GetService(
                        typeof(ISharePointProjectService));
                }

                dteObject = (EnvDTE.DTE)projectService.ServiceProvider.GetService(typeof(EnvDTE.DTE));
            }

            dteObject.ItemOperations.Navigate(nodeInfo.DefaultViewUrl.ToString(), 
                EnvDTE.vsNavigateOptions.vsNavigateOptionsNewWindow);
        }
    }
}

Cet exemple utilise le service de projet SharePoint pour obtenir l'objet DTE utilisé afin d'ouvrir les listes dans Visual Studio.Pour plus d'informations au sujet du service de projet SharePoint, consultez Utilisation du service de projet SharePoint.

Pour plus d'informations sur les tâches de base permettant de créer une extension pour un nœud SharePoint, consultez Comment : étendre un nœud SharePoint dans l'Explorateur de serveurs.

Compilation du code

Cet exemple nécessite des références aux assemblys suivants :

  • EnvDTE

  • Microsoft.VisualStudio.SharePoint

  • Microsoft.VisualStudio.SharePoint.Explorer.Extensions

  • System.ComponentModel.Composition

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

Concepts

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

Utilisation du service de projet SharePoint

Déploiement d'extensions pour les outils SharePoint dans Visual Studio

Autres ressources

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