문제

내가 하려는 페이징에서 문서 라이브러리(또한 이 목록에)SP2013 를 사용하여 나머지/OData 지를 얻 건너뛰기 의 항목 작동합니다.

여기에는 몇 가지 예는 Url 에 내가 내 자신에 SP2013 농도에서 작동하지 않 내 Office365 2013Dev 미리보기를 농장도 있습니다.결과를 반환하고$top 및$orderby 잘 작동하지만 그것을 결코 건너뛰고 모든 항목입니다.즉내가 걸릴 수 있습$건너뛰기의 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

etc.

어떤 아이디어에 내가 뭘 잘못입니까?

도움이 되었습니까?

해결책

휴식에 익숙하지 않지만 이전 구문을 시도하십시오. 예 : * http : //sp15/_vti_bin/listdata.sv/faq? $ skip= 4 & $ top= 2 *

다른 팁

현재 $skip 조회 옵션이 에서 지원 SharePoint2013/온라인.

에 따라 사용 OData 쿼리 작업 SharePoint 에서 나머지 요청:

$skip 쿼리 옵션과 함께 작동하지 않습에 대한 쿼리를 SharePoint 목록 항목.

하지만 활용할 수 있는 $skiptoken 조회 옵션을 반환된 결과로 아래에 설명된다.

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

예를 검색하는 방법을 보여 줍니다 제한된 수의 항목(2 항목)id 를 같이나 크 2Pages 라이브러리:

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

새로운 ODATA v3 _API 엔드 포인트로 SP2013 온라인에서 동일한 문제가 발생합니다.CRUD 작동을 위해서는 당분간 ODATA V2 ListData.svc 엔드 포인트를 사용하는 것이 좋습니다.

VADIM의 응답은 매우 가깝지만 그의 쿼리 문자열은 조금 벗어났습니다.이 문제는 정말로 자신의 Microsoft가 URI 이스케이프와 일관성이 없어지는 것입니다.

Chrome에 대한 Postman 확장을 사용하고 __next 값에서 제대로 이스케이프되지 않은 앰퍼샌드가 있음을 알아 차리면 $ top (대체 접근 방식을 고려할 가치가있는 대체 접근 방식)을 사용하여 반환 된 __next 값을 검토함으로써 사용했습니다.그 접근법을 사용하여 2013 REST ODATA 호출이 일하면서 페이지 매김을받을 수있었습니다.다음은 VADIM의 응답과 함께 사용할 관련 코드입니다.

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

내 경험에서 위의 해결 방법 중 어느 것도 작동하지 않습니다. 외부 목록을 사용 하여이 작업을 시도했기 때문일 수 있습니다.페이징을 구현하려면, 나는 $ skiptoken= paged= true & $ top= 100 URI의 끝에 100을 추가했습니다.다음 페이지의 URI는 json.d .__에 포함됩니다.마지막 페이지에 도달하면 __next가 없을 것입니다

$ Skip 매개 변수가 SharePoint 2013에서 목록 항목에 대해 작동하지 않습니다.데이터 수집 (예 : List 컬렉션, ECC ..)에만 작동합니다. 이 기사가 끝날 때 내 의견을보십시오 : http://msdn.microsoft.com/library/d4b5c277-ed50.-420C-8A9B-860342284B72.ASPX

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top