2014-09-26 87 views
8

標題聲明我的問題相當確切。如果我嘗試使用SharePoint的REST API從列表中收集所有400多個項目,我只會獲得前100個。Sharepoint 2013 REST API不返回列表中的所有項目

我已閱讀http://msdn.microsoft.com/en-us/library/office/dn292552(v=office.15).aspx並在「使用REST處理列表項」部分中,他們聲明

以下示例顯示如何檢索列表項的全部

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

method: GET

headers: ...

我強調一句話一切,因爲那不是我越來越...

我缺少的東西?是否有一些選項我應該禁用/啓用gett真正的所有項目?

謝謝

+0

你能展示你自己的代碼嗎?您是從列表中還是從特定視圖中檢索項目? – Christophe 2014-09-26 15:30:04

+0

沒有代碼是必要的,看看我只收到前100個項目。我只通過訪問瀏覽器中的URL來獲取這些數量的項目(所以只需將http:// site url/_api/web/lists/GetByTitle('Test')/ items'中的站點url和Test替換爲我自己的價值觀和我得到的XML與這100個項目) – leopik 2014-09-26 15:34:52

+0

沒有代碼是必要的,看看結果,但代碼可能是必要的,以瞭解爲什麼;-) – Christophe 2014-09-26 15:37:01

回答

20

該限制是由於服務器端分頁導致的。

一種解決方法是通過輸入的項目數在一次檢索100個項目,或覆蓋的限制:

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

注意,也有在5000

+0

現在我沒有超過500的記錄,所以這應該做的。感謝您的幫助^^! – leopik 2014-09-26 17:44:33

+0

......不過,出於好奇,我將如何檢索100個項目(以便我可以控制下一批號碼)? – leopik 2014-09-26 17:49:22

+1

這不容易...也許從這裏開始http://msdn.microsoft.com/en-us/library/office/fp142385(v=office.15).aspx#sectionSection6然後瀏覽博客和論壇,以找出實際上作品 – Christophe 2014-09-26 19:49:10

1

閾你可以在休息呼叫中使用RowLimit & RowsPerPage。下面的例子

$.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

添加到Christophe's答案,我會說,列出所有(可能5000)列表中的項目,並分析它們會導致性能問題。

如果查詢sharepoint以顯示特定列表中的所有項目,它只會打印出前100個。但xml響應還提供了url以查詢下100個列表項目。

在XML響應的盡頭,你會看到一個標籤這樣

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

href="...." URL是你所需要的。

查詢上述內容將爲您提供接下來的100個或更少項目的列表。 如果還剩下更多的項目,這個xml響應會反過來提供另一個<link rel="next">標籤,如果沒有,這個標籤將不存在。

在我看來,最好能處理100件100件而不是所有件件。

相關問題