none
PageInfo 如何用? RRS feed

  • 问题

  • query.PageInfo = new PagingInfo();
    query.PageInfo.Count = 1;
    query.PageInfo.PageNumber = 2;

    我如何得到第二页的数据?

    我的目的是这样的,我想遍历一个实体的所有记录,后来发现实体记录超过一定数目后(如1W多行)RetrieveMultiple()会出错
    当只有几千(如7K多)则可以正常查出。

    我想是否可以利用PageInfo分页,但由于不了解用法,sdk中也没看太明白,想知道我如何精确知道该分多少页(不知道实体记录数的情况,是否可以查出记录个数?)
    并且如何访问每一页的数据?
    2009年6月24日 3:09

全部回复

  • 我看了刀客回答的另一个帖子http://social.microsoft.com/forums/zh-CN/dymanicscrmzhchs/thread/2f70d498-d395-4bab-b167-cc54979d07e5
    大部门明白了,还有一点不明白:
        PagingCookie 刀客说是记录Guid 的,但我这里执行完RetrieveMultiple()
        为什么PagingCookie是空串?而不是xml?

    2009年6月24日 7:35
  •             
    int count = 0; int pageNumber=1; ProductPriceLevelToExtension ext=new ProductPriceLevelToExtension (MyCrmService ); bool bEof=false ; RetrieveMultipleRequest request=new RetrieveMultipleRequest (); RetrieveMultipleResponse response=null; QueryExpressionHelper query = new QueryExpressionHelper(EntityName.productpricelevel.ToString()); query.Columns.AddColumns(new string[] {"productid", "pricelevelid", "productpricelevelid"}); query.EntityName =EntityName.productpricelevel.ToString(); PagingInfo page=new PagingInfo (); page.Count =20; while (!bEof ) { page.PageNumber =pageNumber; query.PageInfo = page; request.Query = query.Query; request.ReturnDynamicEntities = true; response=(RetrieveMultipleResponse)_service.Execute (request ); bEof =(response.BusinessEntityCollection.BusinessEntities.Length ==20?false:true); if (response.BusinessEntityCollection.BusinessEntities.Length>0) { foreach(DynamicEntity dy in response.BusinessEntityCollection.BusinessEntities ) { if (!dy.Contains("productid")) throw new Exception("productid not exists in productpricelevel"); Lookup lookupProductId = dy["productid"] as Lookup; if (!dy.Contains("pricelevelid")) throw new Exception("pricelevelid not exists in productpricelevel"); Lookup lookupPriceLevelId = dy["pricelevelid"] as Lookup; ext.PriceLevelId =lookupPriceLevelId.Value.ToString(); ext.ProductId =lookupProductId.Value.ToString (); ext.Execute (); Console.WriteLine("Number:{0}, pricelevelname:{1},product:{2}", ++count, lookupPriceLevelId.name , lookupProductId.name ); } } pageNumber+=1; } }

    這是我的部份代碼如果取總頁數我覺得應該是用count一下
    韓建興 http://jamson.cnblogs.com
    2009年6月24日 8:29
  •  while (ResultSet.MoreRecords == true)
             {
                    qryExpression.PageInfo.PageNumber = qryExpression.PageInfo.PageNumber + 1;
                    qryExpression.PageInfo.PagingCookie = ResultSet.PagingCookie;
                    ResultSet = crmEntity.Retrieve(qryExpression);
              }

    ResultSet.PagingCookie跟踪下来是空串?
    2009年6月25日 3:53