2015-01-15 3 views
0

У меня есть простой код, который использует CSOM для чтения элементов в списке SharePoint, размещенном в SharePoint Online.Использование CSOM для извлечения элементов списка в поставщике Hosted SharePoint App

 List list = ClientContext.Web.Lists.GetById(id); 

     ClientContext.Load(list, 
      a => a.ItemCount, 
      a => a.Title); 


     ListItemCollection items = list.GetItems(CamlQuery.CreateAllItemsQuery()); 

     ClientContext.Load(items); 
     ClientContext.ExecuteQuery(); 

     foreach (ListItem li in items) 
     { 
     .... // Do some Stuff ... 
     } 

В конце ExecuteQuery вызова можно получить доступ к списку Название («MyList») и количество записей (7 единиц в общей сложности), но ListItemsCollection элементы всегда имеет отсчет, равный нулю.

Ошибок не возникает.

Что мне нужно для фактического получения элементов списка? Я пропустил еще один вызов в CSOM или может ли это быть проблемой разрешения (не сообщит ли мне SharePoint Online, если это так?)

Помощь с благодарностью получена!

ответ

0

Попробуйте использовать 'include', чтобы получить данные в контексте клиента.

ClientContext.Load (список, a.Include (р => p.ItemCount, р => p.Title); ClientContext.ExecuteQuery(), а затем проверить, является ли число элементов и заголовка есть или нет

.

Пожалуйста, дайте нам знать, является ли этот список с в приложение или нет. Если на хост-сети, то вы должны предоставить разрешение на чтение при appmanifest.xml-> вкладка разрешения

+0

Да. Количество предметов и заголовок всегда есть ... это не проблема. Проблема в том, что я не могу получить ListItems. – user3658298

+0

Вышеупомянутый код запускается только для списка или lib, которые находятся в приложении не в хост-сети. Для веб-хоста вы должны предоставить разрешение. Пожалуйста, сообщите нам, включен ли этот список в приложение или нет. Если он находится в сети хоста, вам необходимо предоставить разрешение на чтение на вкладке appmanifest.xml-> permission – Rahul

+0

Список находится в HostWeb. Если я добавлю разрешение на манифест, который позволяет конечному пользователю выбрать, какой список, которое может разместить хост-приложение провайдера, то как провайдер, размещающий приложение, знает, в каком списке у него есть разрешение на доступ? – user3658298

-1

Я имел такую ​​же проблему, используя Sharepoint 2013 On-Premises и STS как брокер-брокер.

Такое же поведение, никаких ошибок, и я получаю ноль элементы/документы, используя CamlQuery.CreateAllItemsQuery(), чтобы получить «SELECT ALL» CamlQuery

Я решил эту проблему создания нового приложения принципала через страницу:

/layouts/15/appregnew.aspx 

, а затем назначить достаточное количество разрешений с помощью страницы:

/layouts/15/appinv.aspx 

в HostWeb (а не в AppWeb), содержащий список. В моем случае:

<AppPermissionRequests AllowAppOnlyPolicy="true"> 
    <AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="Manage"/> 
    </AppPermissionRequests> 

Там еще ошибка (Sharepoint ошибка), потому что в этом случае он не бросает «доступ запрещен» ошибка

 Смежные вопросы

  • Нет связанных вопросов^_^