如何解决CSOM 查询分页文件结果
试图找出如何通过传递“page”和“pageSize”来更新以下代码以获得分页结果:
using (ClientContext spClientContext = new AuthenticationManager().GetACSAppOnlyContext(siteUrl,_clientId,_clientSecret))
{
if (spClientContext != null)
{
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = "<View Scope="RecursiveAll">" +
"<Query>" +
"<Where>" +
"<Eq><FieldRef Name='FSObjType' /><Value Type='Integer'>0</Value></Eq>" +
"</Where>" +
"<OrderBy><FieldRef Name=\"FileLeafRef\" Ascending=\"FALSE\"/></OrderBy>" +
"</Query>" +
"<RowLimit>10</RowLimit>" +
"</View>";
List list = spClientContext.Web.Lists.GetByTitle("Documents");
ListItemCollection listItems = list.GetItems(camlQuery);
spClientContext.Load(listItems,items => items.Include(
item => item.displayName,item => item.FileSystemObjectType,item => item.File,item => item.File.Name,item => item.File.Author,item => item.File.ModifiedBy,item => item.File.ListItemAllFields["Created"],item => item.File.ListItemAllFields["Modified"],item => item.File.ListItemAllFields["FileRef"],item => item.File.Length));
spClientContext.ExecuteQuery();
if (listItems != null && listItems.Count > 0)
{
foreach (ListItem item in listItems)
{
if (item.FileSystemObjectType.Equals(FileSystemObjectType.File))
{
// Do Stuff
}
}
}
}
}
上面的代码将包含在一个方法中,其中 'pageSize' 将被传递给 CAML 查询 'RowLimit' 元素值。那是有效的。我是 SharePoint CSOM 开发人员的新手,所以现在想弄清楚如何设置页面或位置,以便我只能根据请求查询分页结果?感谢您的帮助!
解决方法
RowLimit
属性包含一个名为 Paged
的布尔属性,其中默认值为 FALSE
。在 RowLimit element (List) 包含一些关于此的规范;但是,这是一个重要的实现,可能您需要使用 do{...}while{...}
循环来辅助您的任务,最终代码将类似于下面的示例:
camlQuery.ViewXml = "<View Scope="RecursiveAll">" +
"<Query>" +
"<Where>" +
"<Eq><FieldRef Name='FSObjType' /><Value Type='Integer'>0</Value></Eq>" +
"</Where>" +
"<OrderBy><FieldRef Name=\"FileLeafRef\" Ascending=\"FALSE\"/></OrderBy>" +
"</Query>" +
"<RowLimit Paged='TRUE'>10</RowLimit>" +
"</View>";
List list = spClientContext.Web.Lists.GetByTitle("Documents");
List<ListItem> listItemColl = new List<ListItem>();
do
{
ListItemCollection listItems = list.GetItems(camlQuery);
spClientContext.Load(listItems,items => items.Include(
item => item.DisplayName,item => item.FileSystemObjectType,item => item.File,item => item.File.Name,item => item.File.Author,item => item.File.ModifiedBy,item => item.File.ListItemAllFields["Created"],item => item.File.ListItemAllFields["Modified"],item => item.File.ListItemAllFields["FileRef"],item => item.File.Length));
spClientContext.ExecuteQuery();
context.Load(listItems);
try
{
spClientContext.ExecuteQuery();
listItemColl.AddRange(listItems);
camlQuery.ListItemCollectionPosition = itemCollection.ListItemCollectionPosition;
}
catch (Exception ex)
{
throw new InvalidOperationException("Error on paging",ex);
}
}
while (camlQuery.ListItemCollectionPosition != null);
如果可能,请向我们提供有关您的测试的反馈。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。