2011-03-17 96 views
4

是否有可能循環訪問共享點列表的字段集合,並只檢索我們的自定義字段而不是共享點內置字段。僅限自定義字段來自Sharepoint列表

using (SPSite site = new SPSite("http://localhost/")) 
{ 
    using (SPWeb web = site.OpenWeb()) 
    { 
     SPList list = web.Lists["My List"]; 
     foreach (SPField field in list.Fields) 
     { 
      //We also get sharepoint built-in column here. And we don't want that, just our 
      //custom created fields. 
     } 
    } 
} 

任何幫助,將不勝感激。

感謝

回答

9

你有兩個選擇:

  1. 檢查該字段是一個內置的領域:SPBuiltInFieldId.Contains(field.Id)
  2. 檢查的SPField.SourceId(從MSDN):

獲取定義內置字段的名稱空間,或者如果它是自定義字段,則獲取標識的GUID是它創建的列表或網站。

+0

神奇的方法。這就像一個冠軍。 – 2011-03-22 02:14:19

0

這裏是一個人爲的(目前未經測試)的方法:

string fieldTypeClass = field.FieldTypeDefinition.FieldTypeClass; 

if (!(string.IsNullOrEmpty(fieldTypeClass) || fieldTypeClass.StartsWith("Microsoft.SharePoint"))) { 
//Only custom fields here 
}