如何在JSOM中使用PortalSiteMapProvider检索列表项 [英] How to use PortalSiteMapProvider in JSOM to retrive list items

查看:57
本文介绍了如何在JSOM中使用PortalSiteMapProvider检索列表项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

亲爱的

我编写了以下代码,以使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆