ページ上の Web パーツを操作する
最終更新日: 2011年4月30日
適用対象: SharePoint Foundation 2010
この記事の内容
Web パーツのタイトルを更新する
Web パーツをページに追加する
Web パーツをページから削除する
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> </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> </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> </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 パーツ