Condividi tramite


Procedura: aggiungere un nodo personalizzato di SharePoint a Esplora server

È possibile aggiungere nodi personalizzati sotto il nodo Connessioni di SharePoint in Esplora server. Questa operazione è utile quando si desidera visualizzare componenti di SharePoint aggiuntivi che, per impostazione predefinita, non sono visualizzati in Esplora server. Per ulteriori informazioni, vedere Estensione del nodo Connessioni di SharePoint in Esplora server.

Per aggiungere un nodo personalizzato, creare innanzitutto una classe che consente di definire il nuovo nodo. Successivamente creare un'estensione che consente di aggiungere il nodo come elemento figlio di un nodo esistente.

Per definire il nuovo nodo

  1. Creare un progetto Libreria di classi.

  2. Aggiungere riferimenti agli assembly riportati di seguito:

    • Microsoft.VisualStudio.SharePoint

    • Microsoft.VisualStudio.SharePoint.Explorer.Extensions

    • System.ComponentModel.Composition

    • System.Drawing

  3. Creare una classe che implementa l'interfaccia IExplorerNodeTypeProvider.

  4. Aggiungere gli attributi seguenti alla classe:

  5. Nell'implementazione del metodo IExplorerNodeTypeProvider.InitializeType utilizzare i membri del parametro typeDefinition per configurare il comportamento del nuovo nodo. Questo parametro è un oggetto IExplorerNodeTypeDefinition che fornisce accesso agli eventi definiti nell'interfaccia IExplorerNodeEvents.

    Nell'esempio di codice seguente viene illustrato come definire un nuovo nodo. In questo esempio si presuppone che nel progetto sia inclusa un'icona denominata CustomChildNodeIcon come risorsa incorporata

    <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;
        }
    }
    

Per aggiungere il nuovo nodo come elemento figlio di un nodo esistente

  1. Nello stesso progetto della definizione del nodo creare una classe che consente di implementare l'interfaccia IExplorerNodeTypeExtension.

  2. Aggiungere l'attributo System.ComponentModel.Composition.ExportAttribute alla classe. Questo attributo consente a Visual Studio di individuare e caricare l'implementazione di IExplorerNodeTypeExtension. Passare il tipo IExplorerNodeTypeExtension al costruttore dell'attributo.

  3. Aggiungere l'attributo ExplorerNodeTypeAttribute alla classe. In un'estensione del nodo questo attributo consente di specificare l'identificatore di stringa per il tipo di nodo che si desidera estendere.

    Per specificare i tipi di nodi predefiniti forniti da Visual Studio, passare uno dei valori di enumerazione seguenti al costruttore dell'attributo:

    • ExplorerNodeTypes: utilizzare questi valori per specificare i nodi relativi alla connessione ai siti (i nodi in cui è visualizzato l'URL del sito), i nodi dei siti o tutti gli altri nodi padre in Esplora server.

    • ExtensionNodeTypes: utilizzare questi valori per specificare uno dei nodi incorporati che rappresentano un singolo componente in un sito SharePoint, ad esempio un nodo che rappresenta un elenco, un campo o un tipo di contenuto.

  4. Nell'implementazione del metodo Initialize, gestire l'evento NodeChildrenRequested del parametro IExplorerNodeType.

  5. Nel gestore dell'evento NodeChildrenRequested aggiungere il nuovo nodo all'insieme dei nodi figlio dell'oggetto Node esposto dal parametro degli argomenti dell'evento.

    Nell'esempio di codice seguente viene illustrato come aggiungere il nuovo nodo come figlio del nodo del sito di SharePoint in Esplora server.

    <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);
        }
    }
    

Esempio completo

Nell'esempio di codice seguente viene fornito il codice completo per definire un nodo semplice e aggiungerlo come figlio del nodo del sito di SharePoint in Esplora server.

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);
        }
    }
}

Compilazione del codice

In questo esempio si presuppone che nel progetto sia inclusa un'icona denominata CustomChildNodeIcon come risorsa incorporata e sono inoltre richiesti riferimenti agli assembly seguenti:

  • Microsoft.VisualStudio.SharePoint

  • System.ComponentModel.Composition

  • System.Drawing

Distribuzione dell'estensione

Per distribuire l'estensione di Esplora server, creare un pacchetto Visual Studio Extension (VSIX) per l'assembly e qualsiasi altro file che si desidera distribuire con l'estensione. Per ulteriori informazioni, vedere Distribuzione di estensioni per gli strumenti di SharePoint in Visual Studio.

Vedere anche

Attività

Procedura dettagliata: estensione di Esplora server per visualizzare web part

Altre risorse

Estensione del nodo Connessioni di SharePoint in Esplora server

Procedura: estendere un nodo SharePoint in Esplora server