Как прочитать поля LookUp с несколькими значениями в SharePoint? - PullRequest
3 голосов
/ 06 декабря 2011

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

Справочная информация

Я унаследовал старый проект .NET, основанный на SharePoint 2007, и разработал и внешнюю базовую библиотеку, которая просто обращается к данным SP, поэтому делает SPпросто бэкэндДа, я знаю, что было бы лучше перейти на SQL, но клиент не согласен.

Предыдущие разработчики использовали простой метод чтения для чтения данных в списке SP:

  SPList list = CurrentRootWeb.Lists["SomeListName"];

И затем они получают доступ к свойствам списка через своего рода словарь (то есть для каждого элемента в списке получают элемент ["SomeValue"]).

Я не разбираюсь в SharePoint, поэтому я не знаюесли это самый эффективный способ получить доступ к данным.

Проблема

Как читать поля LookUp с несколькими значениями в SharePoint?

Кажется каждое запрашиваемое свойствохотеть строку взамен.Так что с item[SomeString] все в порядке, но item[SomeList] делает все бесполезно!Я бы подумал, что столбец списка поиска с несколькими значениями входит в сериализованную или разделенную строку, содержащую выбранные значения (пример: «красный; синий; зеленый»).Чего мне не хватает?

Спасибо!

Ответы [ 2 ]

9 голосов
/ 07 декабря 2011

Если вас особенно интересуют поля LookUp с несколькими значениями, а не только поля MultiChoice, то следующий код должен помочь:

item.Fields["LookFieldName"].Type == SPFieldType.Lookup;
SPFieldLookup LookUpField = item.Fields["LookFieldName"] as SPFieldLookup;
if (LookUpField.AllowMultipleValues)
{
    SPFieldLookupValueCollection valueCollection = item[Field.Id] as SPFieldLookupValueCollection;

    string[] arrLookupValues = (from SPFieldLookupValue val in valueCollection select val.LookupValue).ToArray<string>();


 }
3 голосов
/ 06 декабря 2011

Для каждого из SPField s в полях списка вам нужно проверить Type.

поля.

Если тип SPFieldType.MultiChoice, то вы преобразуете SPField в SPFieldChoice и получаете доступ к коллекции Choices, которая является StringCollection.

...