2011-12-09 104 views
1

ユーザーがサイトURLを入力してサイトを選択し、選択したリストの列を選択できるカスタムフィールドタイプをプログラミングしています。SharePointリストの列を取得

リストの列を取得するにはどうすればよいですか?

私は今では縫い目を試してみましたが、あまりにも多くのデータを受け取りました。ここで私は列を取得する方法である:

private void getColumnsOfSelectedList() 
{ 
    DdlLookupFieldDataList.Items.Clear(); 

    if (!string.IsNullOrEmpty(LabelLookupFieldTargetURLText.Text)) 
    { 
     //Get the lists of the site from the Site URL 
     site = new SPSite(LabelLookupFieldTargetURLText.Text); 
     SPWeb web = site.OpenWeb(); 

     foreach (SPList list in web.Lists) 
     { 
      if (list.Title == DdlLookupFieldTargetList.SelectedItem.Text) 
       foreach (var item in list.Fields) 
        DdlLookupFieldDataList.Items.Add(item.ToString()); 
     } 
    } 
} 

BR

+0

はい予想よりも多くの列があります。 – Sulby

答えて

2

私はフィールドを表示するSPField.Titleを使用します。視聴者に応じて、SPField.InternalNameも表示するのが理にかなっています。メンバーSPField.AuthoringInfoは、フィールドに関するさらに詳しい情報を返します。これは、同じタイトルのフィールドに便利です。括弧内のテキストは、オーサリング情報フィールドから来て

 
Title 
Title (linked to item with edit menu) 
Title (linked to item) 

更新:

list.Fields戻りSPFieldオブジェクトが含まれSPFieldCollection

foreach (SPField /* <-- */ field in list.Fields) 
{ 
    DdlLookupFieldDataList.Items.Add(new ListItem(
    String.Format("{0} {1}", field.Title, field.AuthoringInfo), 
    field.InternalName)); 
} 
+0

コード例でSPFieldを使用するにはどうすればよいですか? – Sulby

+0

答えを更新しました... – Stefan

+0

うん、私はあなたが私を理解できないと思う。私はあなたが私の例にそれを置く方法を教えてくれたかと尋ねました。質問のコードに? – Sulby