2011-07-21 27 views
6

var objWeb = properties.Feature.Parent as SPWeb;sharepoint:既存のコンテンツタイプに既存のサイト列を追加します。プログラム的に

SPContentType contentType = objWeb.ContentTypes["Wiki Page"]; 
if (!contentType.Fields.ContainsField("Keywords")) 
{ 
    SPField field = objWeb.Fields["Keywords"]; 
    SPFieldLink fieldLink = new SPFieldLink(field); 
    contentType.FieldLinks.Add(fieldLink); 
    contentType.Update(true); 
} 

は、私がサイトコンテンツタイプにサイト内の列「キーワード」を追加する機能の活性化にこのコードを使用する「のWikiページは、」私の問題は、それは追加の既存のサイト列から「wikiページ」を追加ではなく、「キーワード」であります新しいサイトの列。私のコードに問題はありますか?

私はあなたが以下のコード試してみてください

+0

私は同様のコードを持つソリューションを持っており、SP2010で動作します。ただし、これは「ファーム」ソリューションです。 Office365はサンドボックスソリューションのみを受け入れます。 –

+0

このオブジェクトを作成するのにweb.AvailableContentTypesまたはweb.ContentTypesを使用していますか? –

答えて

12

を発見し、この問題office365に展開するときに、このコードは私のMOSSサーバー上で正常に動作一つの他の事:私は誰かが私から助けられている願っています

if (objWeb.IsRootWeb) 
{ 
    SPContentType contentType = objWeb.ContentTypes["Wiki Page"]; 
    if (!contentType.Fields.ContainsField("Keywords")) 
    { 
     SPField field = objWeb.Fields["Keywords"]; 
     SPFieldLink fieldLink = new SPFieldLink(field); 
     contentType.FieldLinks.Add(fieldLink); 
     contentType.Update(true); 
    } 
} 
else 
{ 
    SPContentType contentTyperoot = site.RootWeb.ContentTypes["Wiki Page"]; 
    if (!contentTyperoot.Fields.ContainsField("Keywords")) 
    { 
    SPContentType contentType = site.RootWeb.ContentTypes["Wiki Page"]; 
    if (!contentType.Fields.ContainsField("Keywords")) 
    { 
     SPField field = site.RootWeb.Fields["Keywords"]; 
     SPFieldLink fieldLink = new SPFieldLink(field); 
     contentType.FieldLinks.Add(fieldLink); 
     contentType.Update(true); 
    } 
    } 
} 

をコード:

関連する問題