Как получить список ТОЛЬКО пользовательских полей в списке SharePoint 2007 через C #? - PullRequest
3 голосов
/ 09 декабря 2011

Привет и спасибо за поиск!

Фон

В настоящее время у меня есть метод C # для циклического просмотра коллекции списков SharePoint и возврата списков этих списков SP, включая вложенный список их столбцов / SPFields.

Проблема

Как получить список ТОЛЬКО пользовательских полей в списке SharePoint 2007 через C #?

Код пока. , .

SPSite site = SPContext.Current.Site;
        SPWeb web = site.OpenWeb();
        web.AllowUnsafeUpdates = true;
        SPListCollection lists = web.Lists;

        var PellaListCollection = new List<PellaListModel>();

        foreach (SPList l in lists) {
                var PellaList = new PellaListModel();
                var PellaListColumns = new List<PellaListColumn>();
                foreach (SPField c in l.Fields) {
                    if (c.Hidden.Equals(false))
                    {
                        var type = c.FieldTypeDefinition.TypeName.ToString();
                        var col = new PellaListColumn
                        {
                            ColumnId = c.Id,
                            ColumnDataType = type,
                            ColumnTitle = c.Title
                        };
                        PellaListColumns.Add(col);
                    }
                }
                PellaList.ListColumns = PellaListColumns;
                PellaList.ListId = l.ID;
                PellaList.ListTitle = l.Title;
                PellaList.Description = l.Description;
                PellaListCollection.Add(PellaList);
        }

        web.AllowUnsafeUpdates = false;

        return PellaListCollection;
    }

Как вы можете видеть, сейчас я фильтрую, с помощью которого SPFields не являются "скрытыми", но это все равно возвращает довольно много стандартных сгенерированных SharePoint полей со списком. Мне просто нужны поля, созданные пользователями.

Спасибо!

Мэтт

Ответы [ 2 ]

2 голосов
/ 09 декабря 2011

Вы ищете FromBaseType свойство SPField.Это свойство имеет значение true, если поле является частью исходной схемы для списка.

Ознакомьтесь с этой хорошей статьей SharePoint Exchange , чтобы узнать больше.

0 голосов
/ 09 декабря 2011

Вы можете проверить SourceId в SPField.

Из документации MSDN :

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...