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
Creare un progetto Libreria di classi.
Aggiungere riferimenti agli assembly riportati di seguito:
Microsoft.VisualStudio.SharePoint
Microsoft.VisualStudio.SharePoint.Explorer.Extensions
System.ComponentModel.Composition
System.Drawing
Creare una classe che implementa l'interfaccia IExplorerNodeTypeProvider.
Aggiungere gli attributi seguenti alla classe:
System.ComponentModel.Composition.ExportAttribute.Questo attributo consente a Visual Studio di individuare e caricare l'implementazione di IExplorerNodeTypeProvider.Passare il tipo IExplorerNodeTypeProvider al costruttore di attributo.
ExplorerNodeTypeAttribute.In una definizione del nodo, questo attributo consente di specificare l'identificatore di stringa per il nuovo nodo.È consigliabile utilizzare il formato nome società.nome nodo per assicurarsi che tutti i nodi dispongano di un identificatore univoco.
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
Nello stesso progetto della definizione del nodo creare una classe che consente di implementare l'interfaccia IExplorerNodeTypeExtension.
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.
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.
Nell'implementazione del metodo Initialize, gestire l'evento NodeChildrenRequested del parametro IExplorerNodeType.
Nel gestore dell'evento NodeChildrenRequested aggiungere il nuovo nodo alla raccolta 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 incorporatae 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
Concetti
Procedura: estendere un nodo SharePoint in Esplora server
Altre risorse
Estensione del nodo Connessioni di SharePoint in Esplora server