2014-09-26 21 views
8

Başlığı, sorunumu tam olarak bildiriyor. Paylaşım noktasının REST API'sini kullanarak bir listeden 400+ öğeyi bir araya getirmeye çalışırsam, yalnızca ilk 100'i alırım.Sharepoint 2013 REST API bir liste için tüm öğeleri iade etmiyor

http://msdn.microsoft.com/en-us/library/office/dn292552(v=office.15).aspx okudum ve "REST'i kullanarak liste öğeleriyle çalışma" bölümünden şunu belirttiler.

aşağıdaki örnek, bir listenin öğeleri tüm nasıl alınacağını gösterir.

Bütün kelimesini sermiştir method: GET

headers: ...

url: http://site url/_api/web/lists/GetByTitle(‘Test')/items

bu değil çünkü ne çekiyor ...

Ben bir şey eksik? Gerçekten tüm öğeleri devretmek/devre dışı bırakmak için bazı seçenek var mı?

sayesinde

+0

Kendi kodunuzu gösterir misiniz? Listeden veya belirli bir görünümden öğeler mi alıyorsunuz? – Christophe

+0

Sadece ilk 100 öğeyi aldığımı görmek için kod gerekmez.Sadece bu URL’yi tarayıcımdaki URL’yi ziyaret ederek aldım (bu yüzden sadece site url ve Test’i http: // site url/_api/web/lists/GetByTitle’de ('Test')/items' ile değiştirerek kendi değerlerini ve bu 100 öğeyle XML alıyorum) – leopik

+0

sonucunu görmek için kod gerekli değil, ancak nedenini anlamak için kod gerekebilir ;-) – Christophe

cevap

20

sınırlama sunucu tarafı çağrı kaynaklanmaktadır.

bir geçici çözüm öğelerin sayısını girerek sınırlama bir seferde 100 ürün almak ya da geçersiz kılmak için geçerli: 5000

+0

Şimdilik 500'den fazla kayıt yok, bu yüzden bunu yapmalı. Yardımınız için teşekkürler ^^! – leopik

+0

... yine de, meraktan dolayı, 100 öğeyi toplu olarak nasıl alabilirim (böylece hangi parti numarasına geçmek istediğimi kontrol edebilirim)? – leopik

+1

kolay değil ... Belki de buradan başlayın http://msdn.microsoft.com/en-us/library/office/fp142385(v=office.15).aspx#sectionSection6 daha sonra ne olduğunu öğrenmek için bloglara ve forumlara göz atın – Christophe

1

bir eşik de olduğu

https://$DOMAIN/$SITE/_api/web/Lists/getByTitle('$LIST')/Items?$top=1000

Not dinlenme aramasında RowLimit & RowsPerPage kullanabilirsiniz. Aşağıda örnek

$.ajax({ 
url: siteurl + "/_api/web/lists/getbytitle('NewList')/items", 
method: "GET", 
headers: { "Accept": "application/json; odata=verbose" }, 
RowLimit : null, //Specify the row limit 
RowsPerPage : null, //Specify no of rows in a page 
success: function (data) { 
    $.each(data.d.results, function(index, item){ 
$('#oDataFilter').append("<tr>" + "<td class="+styleClass+">" + item.ID + "</td>" + "<td class="+styleClass+">"+ item.Title + "</td>" + "</tr>"); 
}); 
}, 
    error: function (error) { 
alert('Error getListItems :: '+JSON.stringify(error)); 
} 
1

bir listedeki tüm (potansiyel 5000) öğeleri listeleme ve onları performans sorunları neden olacaktır ayrıştırma söyleyebilirim Christophe's cevap ekleme olduğunu.

Belirli bir listedeki tüm öğeleri göstermek için paylaşım noktasını sorgularsanız, yalnızca ilk 100'ü yazdırırdı. Ancak, xml yanıtı ayrıca URL'nin sonraki 100 liste öğesi için sorgulamasını sağlar.

xml yanıtının çok sonunda href="...." içindeki url şunlar gerekir bu

<link rel="next" href="https://xxxxx.sharepoint.com/_api/web/lists/GetByTitle('list')/items?%24skiptoken=Paged%3dTRUE%26p_ID%3d100" /> 

gibi bir etiket göreceksiniz.

Yukarıdaki sorgulama, bir sonraki 100 veya daha az öğenin bir listesini sağlar. Daha fazla öğe kaldıysa, bu xml yanıtı başka bir <link rel="next"> etiketi sağlar ve bu etiket mevcut değilse.

Benim düşünceme göre 100'lük setlerden 100'ünü set halinde ele almak daha iyidir.

İlgili konular