使用JavaScript从SharePoint组合和排序两个数据集合

Combining and sorting two collections of data from SharePoint using JavaScript

本文关键字:两个 数据 集合 数据集 JavaScript SharePoint 组合 排序 使用      更新时间:2023-09-26

我刚开始写javascript,我想打印出列表中的项目以及按字母顺序排列的子网站。如何按字母顺序打印合并后的输出?当前的输出是按ABC顺序显示列表项,然后按ABC顺序显示子网站。

$(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>

您可以将所有列表和子网站名称保存到同一个数组中,然后在循环遍历该数组以打印结果之前对该数组进行排序(使用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>");
            }    
        }
    });
}