2015-10-08 2 views
0

Я новичок в написании javascript, я хочу распечатать элементы в списке, а также подсайты в алфавитном порядке. Как напечатать этот комбинированный вывод в алфавитном порядке? Текущий вывод отображает элементы списка в порядке ABC, а затем subsites в порядке ABC.Объединение и сортировка двух наборов данных из SharePoint с использованием JavaScript

$(document).ready(function() { 
 
    GetItems(); 
 
}); 
 

 
function GetItems() { 
 
    $().SPServices({ 
 
     operation: "GetListItems", 
 
     async: true, 
 
     listName: "GatheredSites", 
 
     CAMLViewFields: "<ViewFields><FieldRef Name='Title' /></ViewFields>", 
 
     CAMLQuery: "<Query><OrderBy><FieldRef Name='Title' Ascending='True' /></OrderBy></Query>", 
 
     completefunc: function(xData, Status) { 
 
      if (Status == 'success') { 
 
       $(xData.responseXML).SPFilterNode("z:row").each(function() { 
 
        var name = ($(this).attr("ows_Title")); 
 
        $("#divItems").append("<li>" + name + "</li>"); 
 
       }); 
 
       Subsites(); 
 
      } else { 
 
       jQuery("#displayItems").append("<div>Empty</div>"); 
 
      } 
 

 
     } 
 
    }); 
 

 
} 
 

 
function Subsites() { 
 
    $().SPServices({ 
 
     operation: "GetWebCollection", 
 
     webURL: "*url*", 
 
     async: true, 
 
     completefunc: function(xData, Status) { 
 
      $(xData.responseXML).find("Webs > Web").each(function() { 
 
       var $node = $(this); 
 
       var liHtml = "<li> <a href='" + $node.attr("Url") + "' >" + $node.attr("Title") + "</a> </li>"; 
 
       $("#displayItems").append(liHtml); 
 
      }); 
 

 
     } 
 
    }); 
 
}
< div id = "displayItems" > 
 
    < /div>

+0

umm, я не уверен, что здесь не так? вы сказали, что хотите, чтобы они печатались в алфавитном порядке, а затем вы сказали, что они печатают в алфавитном порядке ... можете ли вы дать снимок того, что он печатает, и как вы предпочитаете его печатать? – Nikerym

ответ

-1

Вы можете сохранить все список и Subsite имена в том же массиве, а затем отсортировать массив (используя Array.sort()) перед циклом через него, чтобы распечатать результаты.

function GetItems() { 
    var names = []; 
    $().SPServices({ 
     operation: "GetListItems", 
     async: true, 
     listName: "GatheredSites", 
     CAMLViewFields: "<ViewFields><FieldRef Name='Title' /></ViewFields>", 
     CAMLQuery: "<Query><OrderBy><FieldRef Name='Title' Ascending='True' /></OrderBy></Query>", 
     completefunc: function (xData, Status) { 
      if (Status == 'success') { 
       $(xData.responseXML).SPFilterNode("z:row").each(function() { 
        var name = ($(this).attr("ows_Title")); 
        names.push(name); 
       }); 
       $().SPServices({ 
        operation: "GetWebCollection", 
        webURL: "*url*", 
        async: true, 
        completefunc: function (xData, Status) { 
         $(xData.responseXML).find("Webs > Web").each(function() { 
          var $node = $(this); 
          names.push($node.attr("Title")); 
         }); 
         names.sort(); 
         var output = $("#divItems"); 
         for (var i = 0, len = names.length; i < len; i++) { 
          output.append("<li>" + names[i] + "</li>"); 
         } 
        } 
       }); 
      } else { 
       jQuery("#displayItems").append("<div>Empty</div>"); 
      }  
     } 
    }); 
} 
+0

Да, это именно то, что я пытался сделать. Я использовал массив сначала, но он не работал. Я назвал это неправильным. Спасибо! –