سؤال

أحاول إجراء الترحيل على مكتبة المستندات (أحاول أيضًا القيام بذلك في قائمة) باستخدام SP 2013 باستخدام REST/OData ولكن يبدو أنني لا أستطيع الحصول على تخطي من العناصر العاملة.

فيما يلي بعض الأمثلة على عناوين URL التي أحاول تجربتها في مزرعة SP 2013 الخاصة بي، كما أنها لا تعمل في مزرعة Office 365 2013 Dev Preview الخاصة بي.يتم إرجاع النتائج ويعمل $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 من 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 في الوقت الحالي.

استجابة فاديم قريبة جدا، لكن سلسلة استفساراته خارج قليلا.المشكلة ليست في الحقيقة له، مايكروسوفت كأنها غير متسقة مع الهروب من URI الخاص بهم.

استخدمت ملحق Postman للكروم ومن خلال فحص قيمة __next التي تم إرجاعها عند استخدام Top $ Top (وهو نهج بديل يستحق النظر فيه)، لاحظت أن هناك أمبيرا لا يتم هربها بشكل صحيح في قيم __next.باستخدام هذا النهج الذي تمكنت من الحصول على ترقيم الصفحات مع استشطاء ODA 2013.فيما يلي التعليمات البرمجية ذات الصلة للاستخدام بالاقتران مع استجابة Vadim. giveacodicetagpre.

في تجربتي، أي من الحلول المذكورة أعلاه - قد يكون هذا لأنني كنت أحاول ذلك باستخدام قائمة خارجية.لتنفيذ الترحيل، أضفت $ skiptoken= مقسم= True & $ Top= 100 إلى نهاية URI.سيتم تضمين URI للصفحة التالية ضمن JSON.D .__ التالي.بمجرد الوصول إلى الصفحة الأخيرة لن تكون __Next موجودة

تعمل المعلمة Skip $ في SharePoint 2013 للعناصر القائمة.يعمل فقط لجمع البيانات (مثل مجموعات القائمة، ECC ..). انظر تعليقي في نهاية هذه المقالة: http://msdn.microsoft.com/library/d4b5c277-ed50-420C-8A9B-86034284B72.aspx

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى sharepoint.stackexchange
scroll top