CSOM查询分页文件结果



试图找出如何通过传递"page"one_answers"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。At-RowLimit元素(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);

如果可能,请向我们反馈您的测试。

相关内容

  • 没有找到相关文章

最新更新