質問

ページでWebパートをあるゾーンから別のゾーンにプログラムで移動するにはどうすればよいですか?

各サイトをループしてページを更新する複数のサイトがあります。

役に立ちましたか?

解決

使用 splimitedwebpartmanager.movewebpart 方法:

string zoneId = "TopZone";           // ID of the WebPartZone control
string zoneIndex = 0;                // Location of web part within zone
string webPartTitle = "Sales Tips";  // Title of web part
string filename = "default.aspx";    // Filename relative to SPWeb object

using (SPLimitedWebPartManager webPartManager = 
    site.GetLimitedWebPartManager(filename, PersonalizationScope.Shared))
{
    try
    {
    	foreach (WebPart webPart in webPartManager.WebParts)
    	{
    		if (webPart.Title == webPartTitle)
    		{
    			webPartManager.MoveWebPart(webPart, zoneId, zoneIndex);
    			webPartManager.SaveChanges(webPart);
    			break;
    		}
    	}
    }
    finally
    {
    	webPartManager.Web.Dispose();
    }
}

他のヒント

アレックスからの答えに加えて、サイトのコレクションやサイトを反復するときは注意してください。たとえば、独自のコンテキストを確立する必要があるコンソールアプリケーションからこれを行うと、反復中にSPSITEオブジェクトとSPWEBオブジェクトを処分するのを忘れた場合、メモリが非常に速く不足します(例:Sites.AllWebs)。

MSDNの処分ガイドラインを読んで理解する:ベストプラクティス:使い捨てのWindows SharePoint Servicesオブジェクトの使用

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top