分页在这里不起作用,它说的错误:不支持查询表达式。
此行发生错误:
clientContext.Load(listItems,itms => itms.Skip((PageNumber - 1)* PageSize).Take(PageSize));
有人可以建议吗?
由于
/// <summary>
/// Method to return list of documents of a specific document library
/// </summary>
/// <param name="docLibaryName"></param>
/// <returns></returns>
public List<Document> GetDocumentsByLibraryName(string spURL, string docLibaryName, int PageSize, int PageNumber)
{
List<Document> docList = new List<Document>();
//Access the Document Library
ClientContext clientContext = new ClientContext(spURL);
List sharedDocumentsList = clientContext.Web.Lists.GetByTitle(docLibaryName);
//Specify the Caml Query
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml =
@"<View Scope='Recursive'></View>";
ListItemCollection listItems = sharedDocumentsList.GetItems(camlQuery);
clientContext.Load(listItems, itms => itms.Skip((PageNumber - 1) * PageSize).Take(PageSize));
clientContext.ExecuteQuery();
AddItemsToDocumentCollection(docList, listItems);
return docList.ToList();
}
答案 0 :(得分:2)
错误表明不支持Skip
运算符。
CAML中没有Skip
运算符,因此查询提供程序无法为您翻译该查询。
Sharepoint支持的唯一分页操作是获取下一页,而不是第n页。在执行查询后,您可以通过将CamlQuery
对象的ListItemCollectionPosition
设置为ListItemCollectionPosition
的{{1}}值来获取下一页。如果它为null,则没有下一页。您还需要在查询的viewXML中设置ListItemCollection
以确定页面大小。
它看起来像这样:
RowLimit
附注:请务必丢弃using (var context = new ClientContext("http://vddp23q-5d16d1e/"))
{
var query = new CamlQuery();
var list = context.Web.Lists.GetByTitle("Documents");
int pageSize = 10;
query.ViewXml = string.Format(
@"<View><RowLimit Paged='true'>{0}</RowLimit></View>", pageSize);
ListItemCollection items;
do
{
items = list.GetItems(query);
context.Load(items);
context.ExecuteQuery();
foreach (var item in items)
DoStuff(item);
query.ListItemCollectionPosition = items.ListItemCollectionPosition;
}
while (items.ListItemCollectionPosition != null);
}
个对象。