【问题标题】:Get list item count from all lists on all webs of site从所有网站上的所有列表中获取列表项计数
【发布时间】:2018-09-05 04:26:44
【问题描述】:

我发现以下帖子返回站点内所有网站上所有列表中的列表项。我试图弄清楚如何返回列表项计数而不是列表项。任何援助将不胜感激。

JSOM dynamicly get two announcements from all lists in all webs

更新:

我可以使用以下方法返回站点上所有文档库的详细信息:

function retrieveAllListProperties() {
    var clientContext = new SP.ClientContext.get_current();
    var oWebsite = clientContext.get_web();
    this.collList = oWebsite.get_lists();
    clientContext.load(collList);
    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySucceeded() {
    var tCount = 0;
    var listInfo = 'Lists on the current site:' + '\n\n';
    var listEnumerator = collList.getEnumerator();
    while (listEnumerator.moveNext()) {
        var oList = listEnumerator.get_current();
        if (oList.get_baseTemplate() === 101) {
            listInfo += 'URL: ' + oList.get_parentWebUrl() + '  |  Title: ' + oList.get_title() + '  |  BaseType: ' + oList.get_baseTemplate() + '  |  Count: ' + oList.get_itemCount() + '\n';
            tCount += + oList.get_itemCount();
        }
    }
    listInfo += '\nTotal Documents: ' + tCount;
    console.log(listInfo);
}

function onQueryFailed(sender, args) {
    console.log('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

我可以使用以下方法返回网站集的所有网站和子网站:

function getAllWebs(success,error)
{
    var siteUrl = '/sites/usaraf/g357';

   var ctx = SP.ClientContext.get_current();
   var web = ctx.get_site().get_rootWeb();
   var result = [];
   var level = 0;
   var getAllWebsInner = function(web,result,success,error) 
   {
      level++;
      var ctx = web.get_context();
      var webs = web.get_webs(); 
      ctx.load(webs,'Include(Title,ServerRelativeUrl,Webs)');
      ctx.executeQueryAsync(
         function(){
            for(var i = 0; i < webs.get_count();i++){
                var web = webs.getItemAtIndex(i);
                result.push(web);
                if(web.get_webs().get_count() > 0) {
                   getAllWebsInner(web,result,success,error);
                }   
            }
            level--;
            if (level == 0 && success)
              success(result);  
        },
        error);
   };

   getAllWebsInner(web,result,success,error);    
}

getAllWebs(
 function(allwebs){
    for(var i = 0; i < allwebs.length;i++){
        console.log(allwebs[i].get_title() + "-" + allwebs[i].get_serverRelativeUrl());   
    }
 },
function(sender,args){
     console.log(args.get_message());
});

我试图弄清楚如何将两者联系在一起,因此我为所有网站和子网站上的所有指定列表返回以下内容。

Lists on the current site:

URL: /sites/usaraf-ea/visa  |  Title: Applications  |  BaseType: 101  |  Count: 24
URL: /sites/usaraf-ea/visa  |  Title: docDropOff  |  BaseType: 101  |  Count: 28
URL: /sites/usaraf-ea/visa  |  Title: docResources  |  BaseType: 101  |  Count: 5
URL: /sites/usaraf-ea/visa  |  Title: Documents  |  BaseType: 101  |  Count: 2
URL: /sites/usaraf-ea/visa  |  Title: Site Assets  |  BaseType: 101  |  Count: 23

Total Documents: 82

【问题讨论】:

    标签: sharepoint


    【解决方案1】:

    当您获得listitem collection 后,您可以调用listItems.get_count() 以返回项目数。

    示例代码:

    <script type="text/javascript">
            var clientContext = null;
            var web = null;
            ExecuteOrDelayUntilScriptLoaded(getListItemsCount, "sp.js");
            function getListItemsCount() {
                clientContext = new SP.ClientContext.get_current();
                web = clientContext.get_web();
                var list = web.get_lists().getByTitle("Child");
                var camlQuery = new SP.CamlQuery();                        
                this.listItems = list.getItems(camlQuery);
                clientContext.load(listItems, 'Include(Id)');
                clientContext.executeQueryAsync(function () {
                    alert(listItems.get_count());
                },
                function () {
                    alert('error');
                });
            }
        </script>
    

    【讨论】:

    • 感谢您的回复。如果您有时间看一下,我已经更新了我的问题/意图。
    猜你喜欢
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-11
    • 1970-01-01
    相关资源
    最近更新 更多