Procedura: ottenere dati per un nodo SharePoint incorporato in Esplora server
Per ogni nodo SharePoint incorporato in Esplora server, è possibile ottenere dati per il componente SharePoint sottostante rappresentato dal nodo. Per ulteriori informazioni, vedere Estensione del nodo Connessioni di SharePoint in Esplora server.
Esempio
Nell'esempio di codice seguente viene illustrato come ottenere dati per l'elenco SharePoint sottostante rappresentato da un nodo di elenco in Esplora server. Per impostazione predefinita, i nodi di elenco presentano la voce di menu di scelta rapida Visualizza nel browser che è possibile selezionare per aprire gli elenchi in un browser Web. In questo esempio vengono estesi nodi di elenco mediante l'aggiunta della voce di menu di scelta rapida Visualizza in Visual Studio che consente di aprire gli elenchi direttamente in Visual Studio. Il codice accede ai dati di elenco per il nodo in modo da ottenere l'URL dell'elenco da aprire in 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);
}
}
}
In questo esempio viene utilizzato il servizio del progetto SharePoint per ottenere l'oggetto DTE utilizzato per aprire gli elenchi in Visual Studio. Per ulteriori informazioni sul servizio del progetto SharePoint, vedere Utilizzo del servizio di progetto SharePoint.
Per ulteriori informazioni sulle attività di base per creare un'estensione per un nodo SharePoint, vedere Procedura: estendere un nodo SharePoint in Esplora server.
Compilazione del codice
In questo esempio sono richiesti riferimenti agli assembly seguenti:
EnvDTE
Microsoft.VisualStudio.SharePoint
Microsoft.VisualStudio.SharePoint.Explorer.Extensions
System.ComponentModel.Composition
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
Concetti
Utilizzo del servizio di progetto SharePoint
Altre risorse
Estensione del nodo Connessioni di SharePoint in Esplora server
Procedura: estendere un nodo SharePoint in Esplora server
Distribuzione di estensioni per gli strumenti di SharePoint in Visual Studio