Пользовательские поля только из списка Sharepoint - PullRequest
4 голосов
/ 17 марта 2011

Можно ли выполнить циклический сбор списка полей списка точек доступа и получить только наши пользовательские поля, а не встроенные поля общих точек.

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.
       }
   }
}

Любая помощь будет оценена.

Спасибо

Ответы [ 3 ]

9 голосов
/ 17 марта 2011

У вас есть два варианта:

  1. Проверьте, является ли поле встроенным полем: SPBuiltInFieldId.Contains(field.Id)
  2. Проверка SPField.SourceId (из MSDN):

Получает либо пространство имен, определяющее встроенное поле, либо, если оно настраиваемое поле, GUID, определяющий список или веб-сайт, на котором оно было создано.

0 голосов
/ 23 марта 2011

Вот придуманный (и в настоящее время не проверенный) способ:

string fieldTypeClass = field.FieldTypeDefinition.FieldTypeClass;

if (!(string.IsNullOrEmpty(fieldTypeClass) || fieldTypeClass.StartsWith("Microsoft.SharePoint"))) {
//Only custom fields here
}
0 голосов
/ 17 марта 2011

Я не знаю, действительно ли это то, что вы ищете, если «LINQ» все еще «улыбается» .net digirati, , но использование LINQ to Sharepoint может помочь вам.

...