Вопрос

Я пытаюсь выполнить подкачку в библиотеке документов (также пытаюсь сделать это в списке) с SP 2013, используя REST / OData, но, похоже, я не могу получить пропуск из работающих элементов.

Вот несколько примеров URL-адресов, которые я пробую на своей собственной ферме SP 2013, и это также не работает на моей ферме предварительного просмотра Office 365 2013 для разработчиков.Возвращаются результаты, и $top и $ orderby работают нормально, но при этом никогда не пропускаются какие-либо элементы.т. е.Я могу убрать $skip из URL-адреса и получить тот же результат.

http://sp15/_api/web/lists/GetByTitle('FAQ')/Items?$skip=2&$top=2&$orderby=ID
http://sp15/_api/web/lists/GetByTitle('FAQ')/Items?$skip=2
http://sp15/_api/web/lists/GetByTitle('FAQ')/Items?$skip=2&$top=2

http://sp15/_api/web/lists/GetByTitle('Documents')/Items?$skip=2&$top=2&$orderby=ID
http://sp15/_api/web/lists/GetByTitle('Documents')/Items?$skip=2&$top=2&$orderby=ID desc

и т.д.

Есть какие-нибудь идеи относительно того, что я делаю не так?

Это было полезно?

Решение

Я не так знаком с отдыхом, но попробуйте старый синтаксис: Пример: * http://sp15/_vti_bin/listdata.svc/faq? $ Skip= 4 & $ top= 2 *

Другие советы

В настоящее время $skip опция запроса - это нет поддерживается в SharePoint 2013 / Online.

Согласно Используйте операции запроса OData в запросах SharePoint REST:

Тот Самый $skip параметр запроса не работает с запросами для SharePoint элементы списка.

Но вы могли бы использовать $skiptoken опция запроса для возврата постраничных результатов, как показано ниже.

Формат: $skiptoken=Paged=TRUE&p_ID=<last item id to skip>&$top=<items count>

Пример

В примере показано, как получить ограниченное количество элементов (2 элемента) с идентификатором, равным или больше 2 От Pages библиотека:

function getPagedItems(webUrl,listTitle,startItemId,itemsCount)
{
    var endpointUrl = webUrl + "/_api/web/lists/getbytitle('" + listTitle +  "')/items?$skiptoken=" + encodeURIComponent('Paged=TRUE&p_SortBehavior=0&p_ID=' + (startItemId-1) + '&$top=' + itemsCount);
    return executeRequest(endpointUrl,'GET');
}


getPagedItems('https://contoso.sharepoint.com/','Pages',2,2)
.done(function(data){
    if(data.d.results.length == 0){
        console.log('Items not found');
        return;
    }
    for(var i = 0; i < data.d.results.length; i++){
        var item = data.d.results[i];
        console.log(item.Title);
    }   
});

где

function executeRequest(url,method,headers,payload) 
{
    if (typeof headers == 'undefined'){
        headers = {};
    }
    headers["Accept"] = "application/json;odata=verbose";
    if(method == "POST") {
        headers["X-RequestDigest"] = $("#__REQUESTDIGEST").val();
    }   

    var ajaxOptions = 
    {       
       url: url,   
       type: method,  
       contentType: "application/json;odata=verbose",
       headers: headers
    };
    if(method == "POST") {
      ajaxOptions.data = JSON.stringify(payload);
    }  

    return $.ajax(ajaxOptions);
}

Я вижу ту же проблему на SP2013 онлайн с новой конечной точкой Odata V3 _API.Для операции CRUD Возможно, лучше использовать конечную точку odata v2 listdata.svc.

Ответ Вадима очень близко, но его строка запроса немного выключена.Вопрос на самом деле не его, ее Microsoft, поскольку они не соответствуют их URI.

Я использовал расширение почтальона для Chrome и, изучив значение __Next, возвращаемое при использовании $ Top (который является альтернативным подходом, который стоит учитывать), я заметил, что есть амперсанд, который не сбежал должным образом в значениях __Next.Используя этот подход, я смог получить Pagination с RECT ODATA ODATA.Вот соответствующий код для использования в сочетании с ответом Вадима.

var queryString = "?%24skiptoken=Paged%3DTRUE%26p_ID%3D" + (startItemId - 1) + '&%24top=' + itemCount;
.

В моем опыте, ни один из вышеперечисленных решений работает - это может быть, потому что я пытался это использовать внешний список.Чтобы реализовать пейджинг, я добавил? $ Skiptoken= PACED= TRUE & $ TOP= 100 до конца URI.URI для следующей страницы будет включен в json.d .__ следующий.Как только последняя страница достигнута __Next, не будет присутствовать

Параметр $ Skip не работает в SharePoint 2013 для элементов списка.Он работает только для сбора данных (например, коллекции списка, ECC.). Смотрите мой комментарий в конце этой статьи: http://msdn.microsoft.com/library/d4b5c277-ed50-420C-8A9B-860342284B72.aspx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top