如何在JSOM中使用PortalSiteMapProvider检索列表项 [英] How to use PortalSiteMapProvider in JSOM to retrive list items
问题描述
亲爱的
我编写了以下代码,以使用JSOM和listItemCollectionPosition检索列表项集合.
但是我想使用PortalSiteMapProvider,因为我持有大量列表项(5000).
谁能帮我在下面的代码中包含PortalSiteMapProvider吗?
I had written the below code to retrieve list item collection using JSOM along with listItemCollectionPosition .
But I would like to use PortalSiteMapProvider as I am holding large amount of list items (5000).
Can any one please help me how can I include PortalSiteMapProvider in my below code.
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script>
//alert('start script');
var listItems;// The list of retrieved items.
var camlQuery;// For paging, reuse the same query object.
var oList;// The list from which to retrieve items.
var clientContext;
ExecuteOrDelayUntilScriptLoaded(retrieveListItems, "sp.js");
function retrieveListItems(){
//alert('enters function');
clientContext = new SP.ClientContext.get_current();
oList = clientContext.get_web().get_lists().getByTitle('Superstore');
camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml("<View><Query><OrderBy><FieldRef Name='Title' Ascending='TRUE' /></OrderBy></Query></View>");
camlQuery.RowLimit = 101;
this.listItems = oList.getItems(camlQuery);
clientContext.load(listItems);
clientContext.executeQueryAsync( Function.createDelegate(this, this.onQuerySucceeded),Function.createDelegate(this, this.onQueryFailed) );
}
function onQuerySucceeded(){
var listItemInfo = '';
var listEnumerator = listItems.getEnumerator();
while (listEnumerator.moveNext()) {
var oListItem = listEnumerator.get_current();
listItemInfo +=' <strong>Table top Sessions:</strong> ' + oListItem.get_item('Title') +' <br />';
}
$('#divHelloWorld').html(listItemInfo);
var position = listItems.get_listItemCollectionPosition();
if (position != null) {
query.set_listItemCollectionPosition(position);
listItems = targetList.getItems(query);
clientContext.load(listItems);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
}
function onQueryFailed(sender, args){
alert('Request failed. ' + args.get_message() +'\n' + args.get_stackTrace());
}
</script>
<p id="divHelloWorld">Hello World!</p>
推荐答案
您好,
PortalSiteMapProvider 是服务器端对象模型,不能用于客户端解决方案.
PortalSiteMapProvider is server side object model which can’t be used for client side solution.
您只能在客户端解决方案中使用JSOM或REST api.
LazyLoading库已在另一个线程中实现了分页功能,因此可以避免出现节流问题.
如果要使用PortalSiteMapProvider,则必须开发服务器场解决方案或创建自定义WCF服务,以便可以从客户端调用它.
Lee
这篇关于如何在JSOM中使用PortalSiteMapProvider检索列表项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!