我正在根据某些过滤条件从共享点列表中获取数据。
我正在使用 javascript 对象模型获取记录。这工作正常。
我面临分页问题。
我参考过这篇文章:
这适用于“下一页”。 在我的例子中,不适用于“上一页”,因为这些值是随机检索的。所以,ID 不是连续的。
“
listItemCollectionPosition
”仅适用于连续数据吗?
previousPagingInfo = "PagedPrev=TRUE&Paged=TRUE&p_ID=" + myListItems.itemAt(0).get_item('ID');
此代码无法正常工作,一些记录被遗漏。
listItemCollectionPosition
适用于自定义过滤和排序的列表数据。
在您共享的链接中,有另一篇链接文章,其中包含排序和分页的示例。 https://code.msdn.microsoft.com/sharepoint/SharePoint-JSOM-list-5104ca92
您需要向 previousPagingInfo 字符串添加其他值,以指定对结果进行排序的方式。在下面的示例中,我假设您按名称为“SORTCOLUMNNAME”的列表列对结果进行排序。
previousPagingInfo = "PagedPrev=TRUE&Paged=TRUE&p_ID=" + myListItems.itemAt(0).get_item('ID') + "&p_SORTCOLUMNNAME=" + myListItems.itemAt(0).getitem("SORTCOLUMNNAME");
您可以在这里找到一个很好的示例,如何在 CSOM 中进行分页: https://code.msdn.microsoft.com/office/SharePoint-JSOM-list-5104ca92
有一些文章为您提供了有关 Sharepoint 2013 中分页的以下答案。
需要考虑的一个非常重要的因素: - 使用 JSOM 或经典的 Web 服务 svc/asmx 或 oData,您不能使用“$skip”粒子对列表项进行分页。因此,在 OOTB 中几乎不可能用数字进行真正的寻呼。 对于项目,您必须在 SOAP 中使用 listItemCollectionPosition 或使用 $skiptoken (oData)。 唯一可能的分页是上一个/下一个。