Domanda

Sto cercando di fare paging su una libreria documenti (anche provandolo su un elenco) con SP 2013 usando il riposo / odata ma non riesco a ottenere il Saltando di oggetti funzionanti.

Ecco alcuni esempi di URL che sto provando sulla mia fattoria SP 2013 e anche non funziona sulla mia officina 365 2013 Dev Anteprima Fattoria.I risultati vengono restituiti e $ TOP e $ Orderby funzionante, ma non salta mai oggetti.I.e posso prendere $ saltare fuori dall'URL e ottengo lo stesso risultato.

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
.

ecc.

Qualche idea su cosa sto facendo male?

È stato utile?

Soluzione

Non sono così familiare con il riposo ma prova la vecchia sintassi: Esempio: * http://sp15/_vti_bin/listdata.svc/faq? $ Skip= 4 & $ Top= 2 *

Altri suggerimenti

Opzione di query attualmente $skip è non supportata in SharePoint 2013 / online.

Secondo Utilizzare Operations Query Operations in SharePoint Rest Richieste :

.

L'opzione Query $skip non funziona con query per SharePoint Elenco elementi .

Ma puoi utilizzare l'opzione di query $skiptoken per restituire i risultati dei pagenti come dimostrato di seguito.

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

Esempio

L'esempio dimostra come recuperare il numero limitato di elementi (2 elementi) con ID uguale o maggiore 2 dalla libreria 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);
    }   
});
.

dove

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

Vedo lo stesso problema su SP2013 online con il nuovo Endpoint Odata V3 _API.Per il funzionamento crud potrebbe essere migliore per utilizzare l'endpoint di Odata V2 ListData.svc per il momento.

La risposta di Vadim è molto vicina, ma la sua stringa di query è spenta un po '.Il problema non è proprio il suo, i suoi Microsoft come non sono coerenti con la loro sfuggerata URI.

Ho usato l'estensione del postino per Chrome e esaminando il valore __Next restituito quando si utilizza $ top (che è un approccio alternativo che vale la pena considerare) ho notato che c'è un ampersello e non è sfuggito correttamente nei valori __Prossimo.Usando quell'approccio sono stato in grado di ottenere la paginazione con il riposo 2013 delle chiamate Odata funzionanti.Ecco il codice pertinente da utilizzare in combinazione con la risposta di Vadim.

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

Nella mia esperienza, nessuno dei suddetti soluzioni funziona - questo potrebbe essere perché stavo tentando questo utilizzando una lista esterna.Per implementare il paging, ho aggiunto? $ Skiptorken= peched= true & $ top= 100 fino alla fine dell'URI.L'URI per la pagina successiva sarà inclusa sotto JSON.D .__ Avanti.Una volta raggiunta l'ultima pagina __Next non sarà presente

Il parametro $ Skip non funziona in SharePoint 2013 per gli elementi dell'elenco.Lavora solo per la raccolta di dati (come collezioni di elenchi, ecc ..). Vedi il mio commento Alla fine di questo articolo: http://msdn.microsoft.com/library/d4b5c277-ed50-420C-8A9B-860342284B72.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top