Aracılığıyla paylaş


Nasıl yapılır: Server Explorer'da SharePoint düğümü genişletme

Düğümler altında genişletebilirsiniz SharePoint bağlantıları düğümünde Server Explorer.Yeni alt düğümler, kısayol menüsü öğeleri veya özellikleri varolan bir düğüme eklemek istediğinizde yararlıdır.Daha fazla bilgi için bkz. Server Explorer'da SharePoint bağlantı düğümü genişletme.

SharePoint Server Explorer düğüm genişletmek için

  1. Bir class library projesi oluşturun.

  2. Aşağıdaki derlemeler başvurular ekleyin:

    • Microsoft.VisualStudio.SharePoint

    • Microsoft.VisualStudio.SharePoint.Explorer.Extensions

    • System.ComponentModel.Composition

  3. IExplorerNodeTypeExtension arabirimini uygulayan bir sınıf oluşturun.

  4. Ekleme System.ComponentModel.Composition.ExportAttribute class özniteliği.Bu öznitelik bulmak ve yüklemek Visual Studio sağlar, IExplorerNodeTypeExtension uygulaması.PASS IExplorerNodeTypeExtension türü öznitelik Oluşturucusu.

  5. Ekleme ExplorerNodeTypeAttribute class özniteliği.Bu öznitelik, genişletmek istediğiniz düğüm türü dize tanımlayıcısını belirtir.

    Visual Studio tarafından sağlanan yerleşik düğüm türlerini belirtmek için aşağıdaki numaralandırma değerlerden birini özniteliği kurucusuna aktarmalısınız:

    • ExplorerNodeTypes: Site bağlantı düğümleri (sitesi URL'lerini görüntüleme düğümler) belirtmek için bu değerleri düğümleri veya diğer tüm üst düğümler site kullanım Server Explorer.

    • ExtensionNodeTypes: Bir SharePoint sitesinde liste, alan veya içerik türünü temsil eden bir düğüm gibi tek bir bileşeni temsil eden yerleşik düğümlerden birini belirtmek için bu değerleri kullanın.

  6. Uygulamanız içinde IExplorerNodeTypeExtension.Initialize yöntemi, kullanım üyeleri nodeType özellikleri düğüm eklemek için parametre.Bu parametre bir IExplorerNodeType tanımlanan olayları erişim sağlayan nesne IExplorerNodeEvents arabirimi.Örneğin, aşağıdaki olaylar işleyebilir:

Örnek

Aşağıdaki kod örneği, iki farklı tür düğüm uzantıları oluşturulması gösterilmiştir:

  • SharePoint sitesini düğüm bağlam menü öğesi ekler bir uzantısı.Menü öğesini tıklattığınızda, tıklandığını düğümün adını görüntüler.

  • Adlı özel bir özellik ekleyen bir uzantısı ContosoExampleProperty adlı bir alanını temsil eden her düğüm için gövde.

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

Namespace Contoso.ServerExplorerExtension
    <Export(GetType(IExplorerNodeTypeExtension))> _
    <ExplorerNodeType(ExplorerNodeTypes.SiteNode)> _
    Friend Class SiteNodeExtensionWithContextMenu
        Implements IExplorerNodeTypeExtension

        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("Display Message")
            AddHandler menuItem.Click, AddressOf MenuItemClick
        End Sub

        Private Sub MenuItemClick(ByVal Sender As Object, ByVal e As MenuItemEventArgs)
            Dim node As IExplorerNode = CType(e.Owner, IExplorerNode)
            MessageBox.Show(String.Format("Clicked the menu item for the '{0}' node.", node.Text))
        End Sub
    End Class

    <Export(GetType(IExplorerNodeTypeExtension))> _
    <ExplorerNodeType(ExtensionNodeTypes.FieldNode)> _
    Friend Class FieldNodeExtensionWithProperty
        Implements IExplorerNodeTypeExtension

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

        Private Sub NodePropertiesRequested(ByVal Sender As Object, ByVal e As ExplorerNodePropertiesRequestedEventArgs)
            Dim propertyObject As ExampleProperty = Nothing

            ' Only add the property to "Body" fields.
            If e.Node.Text = "Body" Then
                ' If the properties object already exists for this node, get it from the node's annotations.
                If False = e.Node.Annotations.TryGetValue(propertyObject) Then
                    ' Otherwise, create a new properties object and add it to the annotations.
                    propertyObject = New ExampleProperty(e.Node)
                    e.Node.Annotations.Add(propertyObject)
                End If
                e.PropertySources.Add(propertyObject)
            End If
        End Sub
    End Class

    Friend Class ExampleProperty

        Private node As IExplorerNode
        Private Const propertyId As String = "Contoso.CustomActionTestProperty"
        Private Const propertyDefaultValue As String = "This is a test value."

        Friend Sub New(ByVal node As IExplorerNode)
            Me.node = node
        End Sub

        ' Gets or sets a simple string property. 
        <DisplayName("ContosoExampleProperty")> _
        <DescriptionAttribute("This is an example property for field nodes.")> _
        <DefaultValue(propertyDefaultValue)> _
        Public Property TestProperty As String
            Get
                Dim propertyValue As String = Nothing

                ' Get the current property value if it already exists; otherwise, return a default value.
                If False = node.Annotations.TryGetValue(propertyId, propertyValue) Then
                    propertyValue = propertyDefaultValue
                End If
                Return propertyValue
            End Get
            Set(ByVal value As String)
                If value <> propertyDefaultValue Then
                    ' Store the property value in the Annotations property of the node. 
                    ' Data in the Annotations property does not persist when Visual Studio exits.
                    node.Annotations(propertyId) = value
                Else
                    ' Do not save the default value.
                    node.Annotations.Values.Remove(propertyId)
                End If
            End Set
        End Property
    End Class
End Namespace
using System.ComponentModel;
using System.ComponentModel.Composition;
using System.Windows.Forms;
using Microsoft.VisualStudio.SharePoint;
using Microsoft.VisualStudio.SharePoint.Explorer;
using Microsoft.VisualStudio.SharePoint.Explorer.Extensions;

namespace Contoso.ServerExplorerExtension
{
    [Export(typeof(IExplorerNodeTypeExtension))]
    [ExplorerNodeType(ExplorerNodeTypes.SiteNode)]
    internal class SiteNodeExtensionWithContextMenu : IExplorerNodeTypeExtension
    {
        public void Initialize(IExplorerNodeType nodeType)
        {
            nodeType.NodeMenuItemsRequested += nodeType_NodeMenuItemsRequested;
        }

        void nodeType_NodeMenuItemsRequested(object sender, ExplorerNodeMenuItemsRequestedEventArgs e)
        {
            IMenuItem menuItem = e.MenuItems.Add("Display Message");
            menuItem.Click += menuItem_Click;
        }

        void menuItem_Click(object sender, MenuItemEventArgs e)
        {
            IExplorerNode node = (IExplorerNode)e.Owner;
            MessageBox.Show(string.Format("Clicked the menu item for the '{0}' node.", node.Text));
        }
    }

    [Export(typeof(IExplorerNodeTypeExtension))]
    [ExplorerNodeType(ExtensionNodeTypes.FieldNode)]
    internal class FieldNodeExtensionWithProperty : IExplorerNodeTypeExtension
    {
        public void Initialize(IExplorerNodeType nodeType)
        {
            nodeType.NodePropertiesRequested += nodeType_NodePropertiesRequested;
        }

        void nodeType_NodePropertiesRequested(object sender, ExplorerNodePropertiesRequestedEventArgs e)
        {
            // Only add the property to "Body" fields.
            if (e.Node.Text == "Body")
            {
                ExampleProperty propertyObject;

                // If the properties object already exists for this node, get it from the node's annotations.
                if (!e.Node.Annotations.TryGetValue(out propertyObject))
                {
                    // Otherwise, create a new properties object and add it to the annotations.
                    propertyObject = new ExampleProperty(e.Node);
                    e.Node.Annotations.Add(propertyObject);
                }

                e.PropertySources.Add(propertyObject);
            }
        }
    }

    internal class ExampleProperty
    {
        private IExplorerNode node;
        private const string propertyId = "Contoso.ExampleProperty";
        private const string propertyDefaultValue = "This is an example property.";

        internal ExampleProperty(IExplorerNode node)
        {
            this.node = node;
        }

        // Gets or sets a simple string property. 
        [DisplayName("ContosoExampleProperty")]
        [DescriptionAttribute("This is an example property for field nodes.")]
        [DefaultValue(propertyDefaultValue)]
        public string TestProperty
        {
            get
            {
                string propertyValue;

                // Get the current property value if it already exists; otherwise, return a default value.
                if (!node.Annotations.TryGetValue(propertyId, out propertyValue))
                {
                    propertyValue = propertyDefaultValue;
                }
                return propertyValue;
            }
            set
            {
                if (value != propertyDefaultValue)
                {
                    // Store the property value in the Annotations property of the node. 
                    // Data in the Annotations property does not persist when Visual Studio exits.
                    node.Annotations[propertyId] = value;
                }
                else
                {
                    // Do not save the default value.
                    node.Annotations.Remove(propertyId);
                }
            }
        }
    }

}

Bu uzantı düzenlenebilir dize özelliği düğüm ekler.SharePoint server salt okunur verileri görüntüleyen özel özellikleri de oluşturabilirsiniz.Bunun nasıl yapılacağını gösteren bir örnek için bkz: İzlenecek yol: Server Explorer'da görünen Web bölümlerini genişletme.

Kod Derleniyor

Bu örnek, aşağıdaki derlemelerine başvurular gerektirir:

  • Microsoft.VisualStudio.SharePoint

  • Microsoft.VisualStudio.SharePoint.Explorer.Extensions

  • System.ComponentModel.Composition

  • System.Windows.Forms

Uzantısı dağıtma

Dağıtmak için Server Explorer uzantısı oluşturmak bir Visual Studio uzantısı (VSIX) paketini derleme ve uzantısıyla dağıtmak istediğiniz diğer dosyaları.Daha fazla bilgi için bkz. Visual Studio SharePoint Araçlar için uzantıları dağıtma.

Ayrıca bkz.

Görevler

İzlenecek yol: Server Explorer'da görünen Web bölümlerini genişletme

Kavramlar

Nasıl yapılır: Server Explorer'a özel SharePoint düğümü ekleme

Özel verileri SharePoint Araçlar uzantıları ile ilişkilendirme

Diğer Kaynaklar

Server Explorer'da SharePoint bağlantı düğümü genişletme