2011-03-17 110 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 
}