ページ上の Web パーツを操作する

最終更新日: 2011年4月30日

適用対象: SharePoint Foundation 2010

この記事の内容
Web パーツのタイトルを更新する
Web パーツをページに追加する
Web パーツをページから削除する

SharePoint Online で使用可能

Microsoft.SharePoint.Client.WebParts 名前空間 (JavaScript: SP.WebParts) のクラスを使用し、クライアント オブジェクト モデルを介して Web パーツと連携します。LimitedWebPartManager クラス (JavaScript: LimitedWebPartManager) を使用すると、WebParts プロパティ (JavaScript: webParts) を介して、共有範囲または個人範囲内で SharePoint ページ上の Web パーツのコレクションにアクセスできます。

Web パーツのタイトルを更新する

次の例では、指定された Web サイトの Default.aspx ページ上にある Web パーツのコレクションの 2 番目の Web パーツ タイトルを変更します。例では、LINQ クエリ式を使用して、各 Web パーツのタイトルのみを返し、SaveWebPartChanges() メソッド (JavaScript: saveWebPartChanges()) を呼び出し、変更を保存します。ExecuteQuery() メソッド、または ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler) メソッド (JavaScript: executeQueryAsync(succeededCallback, failedCallback)) は 2 回呼び出されます。1 回目は、Web パーツがページに存在するかどうかをコードで確認できるように、Web パーツのコレクションを返すとき、2 回目は変更をデータベースに反映させるときです。

using System;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.WebParts;

namespace SampleCode
{
    class UpdateWebPartTitle
    {
        static void Main()
        {
            ClientContext oClientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
            File oFile = oClientContext.Web.GetFileByServerRelativeUrl("Default.aspx");
            LimitedWebPartManager limitedWebPartManager = oFile.GetLimitedWebPartManager(PersonalizationScope.Shared);

            oClientContext.Load(limitedWebPartManager.WebParts,
                wps => wps.Include(
                wp => wp.WebPart.Title));

            oClientContext.ExecuteQuery();

            if (limitedWebPartManager.WebParts.Count == 0)
            {
                throw new Exception("No Web Parts on this page.");
            }

            WebPartDefinition oWebPartDefinition = limitedWebPartManager.WebParts[1];
            WebPart oWebPart = oWebPartDefinition.WebPart;
            oWebPart.Title = "My New Web Part Title";

            oWebPartDefinition.SaveWebPartChanges();

            oClientContext.ExecuteQuery();
         }
    }
}
Imports System
Imports Microsoft.SharePoint.Client
Imports Microsoft.SharePoint.Client.WebParts

Namespace Microsoft.SDK.SharePointServices.Samples
    Class UpdateWebPartTitle

        Shared Sub Main()

            Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
            Dim serverRelativeUrl As String = "/sites/MySiteCollection/Default.aspx"

            Dim oClientContext As New ClientContext(siteUrl)
            Dim oFile As File = oClientContext.Web.GetFileByServerRelativeUrl(serverRelativeUrl)
            Dim limitedWebPartManager As LimitedWebPartManager = oFile.GetLimitedWebPartManager(PersonalizationScope.Shared)

            oClientContext.Load(limitedWebPartManager.WebParts, _
                                Function(wps) wps.Include( _
                                    Function(wp) wp.WebPart.Title))

            oClientContext.ExecuteQuery()

            If limitedWebPartManager.WebParts.Count = 0 Then
                Throw New Exception("No Web Parts on this page.")
            End If

            Dim oWebPartDefinition As WebPartDefinition = limitedWebPartManager.WebParts(1)
            Dim oWebPart As WebPart = oWebPartDefinition.WebPart
            oWebPart.Title = "My New Web Part Title"

            oWebPartDefinition.SaveWebPartChanges()

            oClientContext.ExecuteQuery()

        End Sub
    End Class
End Namespace
siteUrl = '/sites/MySiteCollection';
serverRelativeUrl = '/sites/MySiteCollection/Default.aspx';

function updateWebPartTitle() {

    this.clientContext = new SP.ClientContext(siteUrl);
    var oFile = clientContext.get_web().getFileByServerRelativeUrl(serverRelativeUrl);

    var limitedWebPartManager = oFile.getLimitedWebPartManager(SP.WebParts.PersonalizationScope.shared);
    this.collWebPart = limitedWebPartManager.get_webParts();

    clientContext.load(collWebPart);

    clientContext.executeQueryAsync(Function.createDelegate(this, this.changeTitle), Function.createDelegate(this, this.onQueryFailed));
}

function changeTitle() {

    if (!collWebPart.get_count()) {
        alert('No Web Parts on this page.');
    }

    var oWebPartDefinition = collWebPart.get_item(2);
    this.oWebPart = oWebPartDefinition.get_webPart();
    oWebPart.set_title('My New Web Part Title');

    oWebPartDefinition.saveWebPartChanges();

    clientContext.load(oWebPart, 'TitleUrl');

    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded() {

    alert('Title changed for Web Part: ' + this.oWebPart.get_titleUrl());
}

function onQueryFailed(sender, args) {

    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

Web パーツをページに追加する

以下の例は、指定された Web サイトの Default.aspx ページの左側に、カスタム コンテンツ エディター Web パーツを 2 番目の Web パーツとして適切に追加します。例では、Web パーツの XML を定義し、この文字列を ImportWebPart(String) メソッド (JavaScript: importWebPart(webPartXml)) に渡します。次に AddWebPart(WebPart, String, Int32) メソッド (JavaScript: addWebPart(webPart, zoneId, zoneIndex)) を呼び出して Web パーツをページに追加します。

using System;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.WebParts;

namespace SampleCode
{
    class AddWebPart
    {
        static void Main()
        {
            ClientContext oClientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
            File oFile = oClientContext.Web.GetFileByServerRelativeUrl("Default.aspx");
            LimitedWebPartManager limitedWebPartManager = oFile.GetLimitedWebPartManager(PersonalizationScope.Shared);

            string xmlWebPart = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + 
                "<WebPart xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" + 
                " xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"" + 
                " xmlns=\"https://schemas.microsoft.com/WebPart/v2\">" + 
                "<Title>My Web Part</Title><FrameType>Default</FrameType>" + 
                "<Description>Use for formatted text, tables, and images.</Description>" +
                "<IsIncluded>true</IsIncluded><ZoneID></ZoneID><PartOrder>0</PartOrder>" +
                "<FrameState>Normal</FrameState><Height /><Width /><AllowRemove>true</AllowRemove>" +
                "<AllowZoneChange>true</AllowZoneChange><AllowMinimize>true</AllowMinimize>" +
                "<AllowConnect>true</AllowConnect><AllowEdit>true</AllowEdit>" +
                "<AllowHide>true</AllowHide><IsVisible>true</IsVisible><DetailLink /><HelpLink />" +
                "<HelpMode>Modeless</HelpMode><Dir>Default</Dir><PartImageSmall />" +
                "<MissingAssembly>Cannot import this Web Part.</MissingAssembly>" +
                "<PartImageLarge>/_layouts/images/mscontl.gif</PartImageLarge><IsIncludedFilter />" +
                "<Assembly>Microsoft.SharePoint, Version=13.0.0.0, Culture=neutral, " + 
                "PublicKeyToken=94de0004b6e3fcc5</Assembly>" +
                "<TypeName>Microsoft.SharePoint.WebPartPages.ContentEditorWebPart</TypeName>" +
                "<ContentLink xmlns=\"https://schemas.microsoft.com/WebPart/v2/ContentEditor\" />" +
                "<Content xmlns=\"https://schemas.microsoft.com/WebPart/v2/ContentEditor\">" +
                "<![CDATA[This is a first paragraph!<DIV>&nbsp;</DIV>And this is a second paragraph.]]></Content>" + 
                "<PartStorage xmlns=\"https://schemas.microsoft.com/WebPart/v2/ContentEditor\" /></WebPart>";
            
            WebPartDefinition oWebPartDefinition = limitedWebPartManager.ImportWebPart(xmlWebPart);

            limitedWebPartManager.AddWebPart(oWebPartDefinition.WebPart, "Left", 1);

            oClientContext.ExecuteQuery();            
        }
    }
}
Imports System
Imports Microsoft.SharePoint.Client
Imports Microsoft.SharePoint.Client.WebParts

Namespace Microsoft.SDK.SharePointServices.Samples
    Class AddWebPart

        Shared Sub Main()

            Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
            Dim serverRelativeUrl As String = "/sites/MySiteCollection/Default.aspx"

            Dim oClientContext As New ClientContext(siteUrl)
            Dim oFile As File = oClientContext.Web.GetFileByServerRelativeUrl(serverRelativeUrl)

            Dim limitedWebPartManager As LimitedWebPartManager = oFile.GetLimitedWebPartManager(PersonalizationScope.Shared)

            Dim xmlWebPart As String = "<?xml version='1.0' encoding='utf-8'?>" + _
            "<WebPart xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'" + _
            " xmlns:xsd='http://www.w3.org/2001/XMLSchema'" + _
            " xmlns='https://schemas.microsoft.com/WebPart/v2'>" + _
            "<Title>My Web Part</Title><FrameType>Default</FrameType>" + _
            "<Description>Use for formatted text, tables, and images.</Description>" + _
            "<IsIncluded>true</IsIncluded><ZoneID></ZoneID><PartOrder>0</PartOrder>" + _
            "<FrameState>Normal</FrameState><Height /><Width /><AllowRemove>true</AllowRemove>" + _
            "<AllowZoneChange>true</AllowZoneChange><AllowMinimize>true</AllowMinimize>" + _
            "<AllowConnect>true</AllowConnect><AllowEdit>true</AllowEdit>" + _
            "<AllowHide>true</AllowHide><IsVisible>true</IsVisible><DetailLink /><HelpLink />" + _
            "<HelpMode>Modeless</HelpMode><Dir>Default</Dir><PartImageSmall />" + _
            "<MissingAssembly>Cannot import this Web Part.</MissingAssembly>" + _
            "<PartImageLarge>/_layouts/images/mscontl.gif</PartImageLarge><IsIncludedFilter />" + _
            "<Assembly>Microsoft.SharePoint, Version=13.0.0.0, Culture=neutral, " + _
            "PublicKeyToken=94de0004b6e3fcc5</Assembly>" + _
            "<TypeName>Microsoft.SharePoint.WebPartPages.ContentEditorWebPart</TypeName>" + _
            "<ContentLink xmlns='https://schemas.microsoft.com/WebPart/v2/ContentEditor' />" + _
            "<Content xmlns='https://schemas.microsoft.com/WebPart/v2/ContentEditor'>" + _
            "<![CDATA[This is a first paragraph!<DIV>&nbsp;</DIV>And this is a second paragraph.]]></Content>" + _
            "<PartStorage xmlns='https://schemas.microsoft.com/WebPart/v2/ContentEditor' /></WebPart>"


            Dim oWebPartDefinition As WebPartDefinition = limitedWebPartManager.ImportWebPart(webPartXml)

            limitedWebPartManager.AddWebPart(oWebPartDefinition.WebPart, "Left", 1)

            oClientContext.ExecuteQuery()

        End Sub
    End Class
End Namespace
siteUrl = '/sites/MySiteCollection';
serverRelativeUrl = '/sites/MySiteCollection/Default.aspx';

function addWebPart() {

    var clientContext = new SP.ClientContext(siteUrl);
    var oFile = clientContext.get_web().getFileByServerRelativeUrl(serverRelativeUrl);

    var limitedWebPartManager = oFile.getLimitedWebPartManager(SP.WebParts.PersonalizationScope.shared);

    var webPartXml = '<?xml version=\"1.0\" encoding=\"utf-8\"?>' + 
        '<WebPart xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"' + 
        ' xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"' + 
        ' xmlns=\"https://schemas.microsoft.com/WebPart/v2\">' + 
        '<Title>My Web Part</Title><FrameType>Default</FrameType>' + 
        '<Description>Use for formatted text, tables, and images.</Description>' + 
        '<IsIncluded>true</IsIncluded><ZoneID></ZoneID><PartOrder>0</PartOrder>' + 
        '<FrameState>Normal</FrameState><Height /><Width /><AllowRemove>true</AllowRemove>' + 
        '<AllowZoneChange>true</AllowZoneChange><AllowMinimize>true</AllowMinimize>' + 
        '<AllowConnect>true</AllowConnect><AllowEdit>true</AllowEdit>' + 
        '<AllowHide>true</AllowHide><IsVisible>true</IsVisible><DetailLink /><HelpLink />' + 
        '<HelpMode>Modeless</HelpMode><Dir>Default</Dir><PartImageSmall />' + 
        '<MissingAssembly>Cannot import this Web Part.</MissingAssembly>' + 
        '<PartImageLarge>/_layouts/images/mscontl.gif</PartImageLarge><IsIncludedFilter />' + 
        '<Assembly>Microsoft.SharePoint, Version=13.0.0.0, Culture=neutral, ' + 
        'PublicKeyToken=94de0004b6e3fcc5</Assembly>' + 
        '<TypeName>Microsoft.SharePoint.WebPartPages.ContentEditorWebPart</TypeName>' + 
        '<ContentLink xmlns=\"https://schemas.microsoft.com/WebPart/v2/ContentEditor\" />' + 
        '<Content xmlns=\"https://schemas.microsoft.com/WebPart/v2/ContentEditor\">' + 
        '<![CDATA[This is a first paragraph!<DIV>&nbsp;</DIV>And this is a second paragraph.]]></Content>' + 
        '<PartStorage xmlns=\"https://schemas.microsoft.com/WebPart/v2/ContentEditor\" /></WebPart>';

    var oWebPartDefinition = limitedWebPartManager.importWebPart(webPartXml);
    this.oWebPart = oWebPartDefinition.get_webPart();

    limitedWebPartManager.addWebPart(oWebPart, 'Left', 1);

    clientContext.load(oWebPart);

    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded() {

    alert('Web Part added: ' + oWebPart.get_title());
}

function onQueryFailed(sender, args) {

    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

Web パーツをページから削除する

以下の例は、DeleteWebPart() メソッド (JavaScript: deleteWebPart()) を使用して、1 番目の Web パーツを指定された Web サイトの Home.aspx ページから削除する方法を示します。

using System;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.WebParts;

namespace SampleCode
{
    class DeleteWebPart
    {
         static void Main()
        {
            ClientContext oClientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
            File oFile = oClientContext.Web.GetFileByServerRelativeUrl("/sites/MySiteCollection/SitePages/Home.aspx ");
            LimitedWebPartManager limitedWebPartManager = oFile.GetLimitedWebPartManager(PersonalizationScope.Shared);

            oClientContext.Load(limitedWebPartManager.WebParts);
                        
            oClientContext.ExecuteQuery();

            if (limitedWebPartManager.WebParts.Count == 0)
            {
                throw new Exception("No Web Parts to delete.");
            }

            WebPartDefinition webPartDefinition = limitedWebPartManager.WebParts[0];

            webPartDefinition.DeleteWebPart();
            
            oClientContext.ExecuteQuery();            
        }
    }
}
Imports System
Imports Microsoft.SharePoint.Client
Imports Microsoft.SharePoint.Client.WebParts

Namespace Microsoft.SDK.SharePointServices.Samples
    Class DeleteWebPart

        Shared Sub Main()

            Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
            Dim serverRelativeUrl As String = "/sites/MySiteCollection/SitePages/Home.aspx"

            Dim oClientContext As New ClientContext(siteUrl)
            Dim oFile As File = oClientContext.Web.GetFileByServerRelativeUrl(serverRelativeUrl)

            Dim limitedWebPartManager As LimitedWebPartManager = oFile.GetLimitedWebPartManager(PersonalizationScope.Shared)

            oClientContext.Load(limitedWebPartManager.WebParts)

            oClientContext.ExecuteQuery()

            If limitedWebPartManager.WebParts.Count = 0 Then
                Throw New Exception("No Web Parts to delete.")
            End If

            Dim webPartDefinition As WebPartDefinition = limitedWebPartManager.WebParts(0)

            webPartDefinition.DeleteWebPart()

            oClientContext.ExecuteQuery()

        End Sub
    End Class
End Namespace
siteUrl = '/sites/MySiteCollection';
serverRelativeUrl = '/sites/MySiteCollection/SitePages/Home.aspx';

function retrieveWebParts() {

    this.clientContext = new SP.ClientContext(siteUrl);
    var oFile = clientContext.get_web().getFileByServerRelativeUrl(server2RelativeUrl);

    this.limitedWebPartManager = oFile.getLimitedWebPartManager(SP.WebParts.PersonalizationScope.shared);
    this.collWebPart = limitedWebPartManager.get_webParts();

    clientContext.load(collWebPart);

    clientContext.executeQueryAsync(Function.createDelegate(this, this.deleteWebPart), Function.createDelegate(this, this.onQueryFailed));
}

function deleteWebPart () {

    if (!collWebPart.get_count()) {
        alert('No Web Parts to delete.');
    }

    var webPartDefinition = limitedWebPartManager.get_webParts().get_item(0);

    webPartDefinition.deleteWebPart();

    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
    
function onQuerySucceeded() {

    alert('Web Part deleted.');
}
function onQueryFailed(sender, args) {

    alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

Microsoft SharePoint Foundation 2010 Silverlight オブジェクト モデルのコンテキスト内でのクライアント オブジェクトの使用に関する情報および使用例については、「Silverlight オブジェクト モデルを使用する」を参照してください。

関連項目

概念

データ取得の概要

クライアント オブジェクトの作成

クライアント オブジェクト モデルのガイドライン

一般的なプログラミング作業

SharePoint Foundation の Web パーツ

その他の技術情報

クライアント クラス ライブラリ

ECMAScript クラス ライブラリ