Javascript 如何在不获取所有项目的情况下获取特定内容类型的listitems计数

Javascript 如何在不获取所有项目的情况下获取特定内容类型的listitems计数,javascript,sharepoint,sharepoint-2010,sharepoint-clientobject,Javascript,Sharepoint,Sharepoint 2010,Sharepoint Clientobject,所以我们有一段代码,它设置了一些元素来显示各种列表中所有项目的计数 现在增加了一项要求,即只有特定内容类型的项才能被计算在内。但是,包含如下所示的caml查询(旧代码已注释掉)使得实际使用的速度大大降低。(显然,它获取数千件物品只是为了计数) 是否有一种方法可以使用javascript计算sharepoint列表中contenttype的所有项目,而javascript不会请求每个列表的所有项目 function setCounter() { context = new SP.Clien

所以我们有一段代码,它设置了一些元素来显示各种列表中所有项目的计数

现在增加了一项要求,即只有特定内容类型的项才能被计算在内。但是,包含如下所示的caml查询(旧代码已注释掉)使得实际使用的速度大大降低。(显然,它获取数千件物品只是为了计数)

是否有一种方法可以使用javascript计算sharepoint列表中contenttype的所有项目,而javascript不会请求每个列表的所有项目

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));
}
函数setCounter(){
context=new SP.ClientContext.get_current();
web=this.context.get_web();
this.lists=web.get_lists();
加载(this.lists);
context.executeQueryAsync(
createDelegate(这个,函数(){
var listsEnumerator=this.lists.getEnumerator();
while(listsEnumerator.moveNext()){
var currentItem=listsEnumerator.get_current();
对于(变量i=0;i
没有,但您可以通过设置viewfields来最小化数据提取。现在就像你在做一个select*而你只需要select id

var caml = "<View><ViewFields><FieldRef Name='Id'/></ViewFields></View><Query>your query here</Query>";
var caml=“您的查询在此”;
执行查询后,只需像以前一样调用get_count()

如果您熟悉jQuery,我建议您看看这个库,它非常易于使用,并帮助您改进使用对象客户机模型的工作