如何在不获取所有项目的情况下获取特定内容类型的列表项的计数
How do you get a count of listitems of a certain content type without fetching all items
所以我们有一段代码,它设置了一些元素来显示各种列表中所有项目的计数。
现在增加了一个要求,即只有特定内容类型的项目才能计数。然而,包含如下所示的caml查询(旧代码已被注释掉)使实际使用速度慢得多。(很明显,它吸引了数千件物品只是为了计数)。
有没有一种方法可以使用javascript来计算sharepoint列表中某个内容类型的所有项目,而不是请求每个列表的所有项目?
function setCounter() {
context = new SP.ClientContext.get_current();
web = this.context.get_web();
this.lists = web.get_lists();
context.load(this.lists);
context.executeQueryAsync(
Function.createDelegate(this, function () {
var listsEnumerator = this.lists.getEnumerator();
while (listsEnumerator.moveNext()) {
var currentItem = listsEnumerator.get_current();
for (var i = 0; i < leng; i++) {
if (leng == 1) ele = listItemCount;
else ele = listItemCount[i];
if (decoded == currentItem.get_title()) {
ele.parentNode.setAttribute("class", "overview_discussions");
// var counter = currentItem.getItems();
// ele.innerText = currentItem.get_itemCount();
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml("<Where><BeginsWith><FieldRef Name='ContentTypeName'/><Value Type='Text'>Discussion</Value></BeginsWith></Where>");
var counter = currentItem.getItems(camlQuery);
context.load(counter);
context.executeQueryAsync(function () { ele.innerText = counter.get_count(); }, executeOnFailure);
break;
}
}
}
}),
Function.createDelegate(this, executeOnFailure));
}
没有,但您可以通过设置视图字段来最大限度地减少数据提取。现在就像你在做一个选择*当你只需要选择id
var caml = "<View><ViewFields><FieldRef Name='Id'/></ViewFields></View><Query>your query here</Query>";
在执行查询后,您只需要像已经执行一样调用get_count()
如果你熟悉jQuery,我建议你看看这个库,它非常容易使用,可以帮助你改进对象客户端模型的工作。http://spservices.codeplex.com/
相关文章:
- 如何从querySelectorAll中获取按钮类型
- 如何使用javascript获取从指定文件夹创建的所有文件的名称、大小、类型和日期
- Typescript angularjs$http获取响应类型(避免使用<any>)
- 使用.content().get().nodevalue;后在firebug中获取类型错误;
- 使用hasAttribute()获取类型错误:hasAttribute不是函数
- 获取类型错误:无法在 angularjs 控制器中调用未定义的方法 'then'
- 在使用日历的产品页面上的 magento 中获取“类型错误:触发器元素为空”错误
- 调用函数时获取类型错误
- 获取类型将图层添加到地图后出错
- 使用 getElementById 获取类型错误
- 获取类型错误:未定义不是函数 AngularJS
- 如何在JSDOC中标记任何类类型以获取类型提示
- 获取类型错误:e 未定义与 js 插件日期时间选择器
- 使用 JavaScript 从 HTML 中的输入标记中获取类型
- 如何获取类型为checkbox的html输入标记中的相关文本
- 在我的主干文件上获取类型错误
- Javascript获取类型/实例名
- array push()jQuery获取类型错误:'stepUp'
- 获取类型错误:对象没有方法“查找”
- IIS6无法获取类型属性;JS替换危险字符