Frage

Ich versuche, mit SP 2013 unter Verwendung von REST/OData Paging in einer Dokumentbibliothek durchzuführen (und dies auch in einer Liste zu versuchen), aber ich kann das anscheinend nicht hinbekommen überspringen der funktionierenden Gegenstände.

Hier sind einige Beispiele für URLs, die ich auf meiner eigenen SP 2013-Farm ausprobiere und die auch auf meiner Office 365 2013 Dev Preview-Farm nicht funktionieren.Ergebnisse werden zurückgegeben und $top und $orderby funktionieren einwandfrei, es werden jedoch niemals Elemente übersprungen.d.h.Ich kann das $skip aus der URL entfernen und erhalte das gleiche Ergebnis.

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

usw.

Irgendwelche Ideen, was ich falsch mache?

War es hilfreich?

Lösung

Ich bin nicht so vertraut mit Pause, aber probieren Sie die alte Syntax: Beispiel: * http://sp15/_VTI_BIN/LISTDATA.SVC/FAQ? $ Skip= 4 & $ top= 2 *

Andere Tipps

Momentan $skip Abfrageoption ist nicht unterstützt in SharePoint 2013/Online.

Entsprechend Verwenden Sie OData-Abfragevorgänge in SharePoint-REST-Anfragen:

Der $skip Die Abfrageoption funktioniert nicht mit Abfragen für SharePoint Elemente auflisten.

Aber Sie könnten es nutzen $skiptoken Abfrageoption, um seitenweise Ergebnisse zurückzugeben, wie unten gezeigt.

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

Beispiel

Das Beispiel zeigt, wie die begrenzte Anzahl von Elementen (2 Elemente) mit einer ID gleich oder größer abgerufen wird 2 aus Pages Bibliothek:

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

Wo

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

Ich sehe das gleiche Problem auf SP2013 online mit dem neuen Endpunkt von ODATA V3 _API.Für den CruD-Betrieb kann es sein, den ODATA V2 listata.svc-Endpunkt vorerst besser zu verwenden.

Die Antwort von Vadim ist sehr nahe, aber seine Abfragezeichenfolge ist ein bisschen aus.Das Problem ist nicht wirklich sein, seine Microsofts, da sie nicht mit ihrem Uri entstanden sind.

Ich habe die PostMan-Erweiterung für Chrome verwendet, und indem er den __Next-Wert untersucht, der zurückgegeben wurde, wenn er mit $ Top (ein alternativer Ansatz in Betracht gezogen wird), bemerkte ich, dass es ein Ampersand gibt, das in den __NEXT-Werten nicht richtig entgangen ist.Mit diesem Ansatz konnte ich mit 2013 Pagination bekommen, um ODATA-Anrufe zu arbeiten.Hier ist der relevante Code, der in Verbindung mit der Antwort von Vadim verwendet wird. generasacodicetagpre.

In meiner Erfahrung funktioniert keine der oben genannten Lösungen - dies könnte sein, dass ich dies mit einer externen Liste versuchte.Um Paging zu implementieren, fügte ich hinzu? $ Skinkoken= Paged= true & $ top= 100 bis zum Ende des URI.Der URI für die nächste Seite wird unter JSON.D.__ als nächstes aufgenommen.Sobald die letzte Seite erreicht ist, ist __NEXT nicht vorhanden

Der Parameter $ Skip funktioniert nicht in SharePoint 2013 für Listenelemente.Es funktioniert nur für die Sammlung von Daten (wie Listensammlungen, ECC ..). Siehe meinen Kommentar am Ende dieses Artikels: http://msdn.microsoft.com/Library/d4b5c277-d50-420C-8A9B-860342284B72.Aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top