Question

J'essaie de faire une pagination sur une bibliothèque de documents (j'essaie également ceci sur une liste) avec SP 2013 en utilisant REST/OData mais je n'arrive pas à obtenir le saut des éléments fonctionnant.

Voici quelques exemples d'URL que j'essaie sur ma propre batterie de serveurs SP 2013 et qui ne fonctionnent pas non plus sur ma batterie de serveurs Office 365 2013 Dev Preview.Les résultats sont renvoyés et $top et $orderby fonctionnent correctement, mais aucun élément n'est ignoré.c'est à dire.Je peux retirer le $skip de l'URL et j'obtiens le même résultat.

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

etc.

Des idées sur ce que je fais de mal ?

Était-ce utile?

La solution

Je ne suis pas si familier avec le repos mais essayez l'ancienne syntaxe: Exemple: * http://sp15/_vti_bin/listdata.svc/faq? $ Skip= 4 & $ TOP= 2 *

Autres conseils

Actuellement $skip l'option de requête est pas pris en charge dans SharePoint 2013/Online.

Selon Utiliser les opérations de requête OData dans les requêtes SharePoint REST:

Le $skip l'option de requête ne fonctionne pas avec les requêtes pour SharePoint éléments de la liste.

Mais vous pourriez utiliser $skiptoken option de requête pour renvoyer les résultats paginés, comme illustré ci-dessous.

Format: $skiptoken=Paged=TRUE&p_ID=<last item id to skip>&$top=<items count>

Exemple

L'exemple montre comment récupérer le nombre limité d'éléments (2 éléments) avec un identifiant égal ou supérieur. 2 depuis Pages bibliothèque:

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);
}

Je vois le même problème sur SP2013 en ligne avec le nouveau point final OData V3 _API.Pour le fonctionnement de CRUD, il pourrait être préférable d'utiliser le point d'extrémité ODATA V2 LISTDATA.SVC pour le moment.

La réponse de Vadim est très proche, mais sa chaîne de requête est désactivée un peu.La question n'est pas vraiment la sienne, ses Microsoft comme ils ne sont pas compatibles avec leur URI s'échappant.

J'ai utilisé l'extension Postman pour Chrome et en examinant la valeur __Next renvoyée lors de l'utilisation de $ Top (qui est une approche alternative qui mérite d'être envisagée) J'ai remarqué qu'il y a une ampersand qui n'est pas échappé correctement dans les valeurs __Next.En utilisant cette approche, j'ai pu obtenir la pagination avec les appels de repos de 2013 ODATA travaillant.Voici le code pertinent à utiliser conjointement avec la réponse de Vadim.

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

Dans mon expérience, aucune des solutions ci-dessus ne fonctionne - cela pourrait être parce que je tentais cela à l'aide d'une liste externe.Pour mettre en œuvre la pagination, j'ai ajouté? $ Skipostoken= paged= TRUE & $ TOP= 100 à la fin de l'URI.L'URI de la page suivante sera incluse sous Json.d .__ Suivant.Une fois que la dernière page est atteinte __Next ne sera pas présente

Le paramètre $ SKIP ne fonctionne pas dans SharePoint 2013 pour les éléments de la liste.Cela ne fonctionne que pour la collecte de données (comme des collections de liste, ECC ..). Voir mon commentaire à la fin de cet article: http://msdn.microsoft.com/library/d4b5c2777-ed50-420c-8A9B-860342284B72.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top