Dynamics CRM2016 Web Api之分頁查詢

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

      來看下查詢的效果,這裏的demo用的是客戶實體,總的記錄數是7條,這裏我每次查詢2條


    第一次的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的值,以備返回上一頁顯示準確的數據。緩存

相關文章
相關標籤/搜索