2009-03-24 23 views
1

私はsharepointにインポートしているリストを参照するための選択フィールド(サイト列内)が必要です。このリストは、選択肢を追加するために更新されることはめったにありません。この列を作成するにはどうすればよいですか?プログラム的に?Sharepointの選択フィールド

よく言えば、それはコード化する方法を理解しようとしているだけです...私は新しいコンテンツタイプとしてリストを最初にインポートする必要があると仮定しています。次に、コンテンツタイプのルックアップ列(倍数)を作成します。

答えて

6

ここに、既存のコンテンツタイプに参照フィールドを追加するコードがあります。

リストの定義を使用している場合は、これがルックアップフィールドを含めることができる唯一の方法です。ルックアップリストのGUIDが必要であり、これは手前では分かっていないため、リスト定義のCAMLに追加することはできません。リストが作成されると、SharePointはこのGuidを自動生成します。

ですから、最初のSPSite

private void CreateLookup(SPWeb web, SPList lookupList, String lookupField, String fieldName, String fieldGroup, bool allowMultiLookup) 
{ 
    using (SPSite site = web.Site) 
    { 
     using (SPWeb rootWeb = site.RootWeb) 
     { 
      rootWeb.Fields.AddLookup(fieldName, lookupList.ID, web.ID, false); 
      SPFieldLookup fieldLookup = (SPFieldLookup)rootWeb.Fields[fieldName]; 
      if (fieldLookup == null) return; 
      fieldLookup.AllowMultipleValues = allowMultiLookup; 
      fieldLookup.LookupField = lookupField; 
      fieldLookup.Group = fieldGroup; 
      fieldLookup.Title = fieldName; 
      fieldLookup.Update(true); 
     } 
    } 
} 

のルートSPWeb内のルックアップ列を作成する必要があります。そして、あなたがexsistingコンテンツタイプまあ

private void AddLookupToContentType(SPWeb web, String fieldName, String contentTypeName) 
{ 
    using (SPSite site = web.Site) 
    { 
     using (SPWeb rootWeb = site.RootWeb) 
     { 
      SPFieldLookup lookupField = (SPFieldLookup)rootWeb.Fields[fieldName]; 
      if (lookupField == null) return; 
      SPContentType riskContentType = rootWeb.ContentTypes[contentTypeName]; 
      if (riskContentType == null) return; 
      riskContentType.FieldLinks.Add(new SPFieldLink(lookupField)); 
      riskContentType.Update(true); 
     } 
    } 
} 
0

Lookup列のように聞こえます。最初にリストをインポートしてから、サイト列としてルックアップを作成する必要があります。

+0

ご覧にこのフィールドを追加する必要がありますそれは言うごとにルックアップです...それをコード化する方法を理解しようとしています... 私は新しいコンテンツタイプとして最初にリストをインポートする必要があると仮定しています。次に、コンテンツタイプのルックアップ列(倍数)を作成します。 – user38734

関連する問題