2015-04-30 3 views
0

Я использую SPServices получить Sharepoint (2010) элементы спискаSPServices петля через несколько listNames

function GetListItemData() { 
    var container = $("#container"); 
    $(container).html(""); 
    var datarows = []; 
    // get list data 
    $().SPServices({ 
    webUrl: "https://", 
    operation: "GetListItems", 
    async: false, 
    listName: myList, // Using GUID should work across multisite apps 
    CAMLViewFields: "<ViewFields><FieldRef Name='Title' /><FieldRef Name='Body' /><FieldRef Name='PublishingPageImage' /><FieldRef Name='PublishingImageCaption' /></ViewFields>", 
    completefunc: function(xData, Status){ 
     $(xData.responseXML).SPFilterNode("z:row").each(function(){ 
     var x={ 
      name: myList, 
      title: $(this).attr("ows_Title"), 
      image: $(this).attr("ows_PublishingPageImage"), 
      caption: $(this).attr("ows_PublishingImageCaption"), 
      body: $(this).attr("ows_Body") 
     }; 
     datarows.push(x); 
     }); 
    } 
    }); 

Я обновление контента сейчас, data- ATTR по ссылкам из различных списков и повторный запуск функции.

Любое руководство по правильному/лучшему способу прокрутки всех списков для создания панели всех из них?

Любое направление очень ценится.

ответ

1

Lists.GetListCollection Method возвращает список информации для всех списков на сайте.

SPServices пример

function getListCollection(completeFn) 
{ 
    $().SPServices({ 
     operation: "GetListCollection", 
     completefunc: function(xData, Status) { 
      var lists = []; 
      $(xData.responseXML).find("Lists > List").each(function(i,el) { 
       var listJson = listXml2Json(el.outerHTML); 
       lists.push(listJson); 
      }); 
      completeFn(lists); 
     } 
    }); 
} 



function listXml2Json(value) 
{ 
    var jsonObject = {}; 
    var schemaXml = $.parseXML(value); 
    $(schemaXml).find('List').each(function() { 
     $.each(this.attributes, function(i, attr){ 
      jsonObject[attr.name] = attr.value; 
     }); 
    }); 
    return jsonObject; 
}  


//print lists title 
getListCollection(
    function(lists){ 
     lists.forEach(function(list){ 
      console.log(list.Title); 
     }); 
    }); 
+0

Вадим, спасибо за указание на это. getListCollection работает, чтобы вернуть все заголовки, UID и количество элементов списка в каждом, но я не понимаю, как получить доступ к элементам списка в каждой коллекции. Есть предположения? С помощью этого решения кажется, что мне еще нужно будет использовать getlistitems, а также вытащить элементы списка коллекции. Любая идея, что мне не хватает? Снова благодарим за помощь! –

+2

Насколько я знаю, нет такой операции, которая возвращает коллекцию списка с коллекцией предметов. С другой стороны, было бы очень дорого с точки зрения производительности возвращать все списки с элементами. Сказав, что вы можете рассмотреть следующие варианты: 1) выполнить несколько запросов для возврата коллекции списка и после этого элементов в списке 2) рассмотреть API CSOM вместо SharePoint Web Services, так как он поддерживает пакетное задание –

+0

@VadimGremyachev, можете ли вы помочь. Я хочу получить список задач из всех дочерних элементов моего sitecollection и отображаться на целевой странице. Можете ли вы предложить правильный подход. Могу ли я использовать spservices с частью веб-сайта редактора контента и использовать вышеуказанный код? – SaMolPP

 Смежные вопросы

  • Нет связанных вопросов^_^