在dynamics crm web api還沒出現前,咱們是經過fetchxml來實現的,固然這種方式依舊可行,那既然web api來了咱們就擁抱新的方式。web
web api中咱們經過指定查詢的條數來實現分頁的效果,很簡單設置http的head即prefer,odata.maxpagesize就能夠了。json
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(weburi); req.Credentials = new NetworkCredential(username, pwd, domain); req.Method = "Get"; req.Accept = "application/json"; req.ContentType = "application/json; charset=utf-8"; req.Headers.Set("OData-MaxVersion", "4.0"); req.Headers.Set("OData-Version", "4.0"); req.Headers.Set("Prefer", "odata.include-annotations= OData.Community.Display.V1.FormattedValue,odata.maxpagesize="+count); using (HttpWebResponse res = (HttpWebResponse)req.GetResponse()) { StreamReader read = new StreamReader(res.GetResponseStream()); result = read.ReadToEnd(); }
第一次的web請求時weburl是標準格式例如"http://xx/api/data/v8.0/accounts?$select=name,telephone1&$orderby=name asc",再取下一頁的數據時(也就是第二次之後的web請求),weburi就是下圖中這個@odata.nextLink的值了,仔細看下圖中返回json中的叫作@odata.nextLink的屬性名,這個值自己已進行過urlencode因此不須要再次urlencode,取值到最後一次返回的json沒有@odata.nextLink這個屬性時表示已經是最後一頁。api
上面咱們只提到了下一頁,那我要返回上一頁怎麼辦,這就須要你本身想辦法了,要麼緩存住返回的結果要麼緩存住@odata.nextLink的值,以備返回上一頁顯示準確的數據。緩存