在javascript中检索sharepoint列表

时间:2016-11-08 15:35:13

标签: javascript list combobox sharepoint-2010

我想在JS中检索sharepoint列表的标题。

我的函数JS:

function retrieveAllListsAllFields() {
        var ctx = SP.ClientContext.get_current();
        var web = ctx.get_web();
        ctx.load(web, "Title");

    ctx.executeQueryAsync(
    Function.createDelegate(this, function(){
        var listTitle = web.get_title() + " Documents";
    }),
    Function.createDelegate(this, this.onQueryFailed)
    );

我检索列表,但我想在另一个函数中使用此列表,以便在组合框中获取我的库的文档列表:

function initComboBox(fileslistBox, fileslistBoxDest, selectLibraryFileFieldResult, entityComboBox, yearComboBox, typeComboBox, library, entityValue, currentSiteUrl) {
    function retrieveAllListsAllFields() {
        var ctx = SP.ClientContext.get_current();
        var web = ctx.get_web();
        ctx.load(web, "Title");

        ctx.executeQueryAsync(
        Function.createDelegate(this, function(){
            var listTitle = web.get_title() + " Documents";
        }),
        Function.createDelegate(this, this.onQueryFailed)
        );

    var listBox;
    var i = 0;
    var reggie = /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})/;
    var entityComboBoxArray = new Array();
    var yearComboBoxArray = new Array();
    var typeComboBoxArray = new Array();

    addItemToArray(entityComboBoxArray, "", "", i);
    addItemToArray(yearComboBoxArray, "", "", i);
    addItemToArray(typeComboBoxArray, "", "", i);

    //init all combox 
    $().SPServices({
        operation: "GetListItems",
        webURL: currentSiteUrl,
        async: true,
        listName: listTitle,        
        CAMLViewFields: "<ViewFields><FieldRef Name='ID' /><FieldRef Name='FileLeafRef' /><FieldRef Name='File_x0020_Type' /><FieldRef Name='Title' /><FieldRef Name='Entity' /><FieldRef Name='Year_Document' /><FieldRef Name='Library' /></ViewFields>",
        CAMLQuery: "<Query><OrderBy><FieldRef Name='Title' /></OrderBy><Where><Eq><FieldRef Name='Library' /><Value Type='Choice'>" + library + " </Value></Eq></Where></Query>",
        completefunc: function (xData, Status) {
            $(xData.responseXML).SPFilterNode("z:row").each(function () {
                i++;
                //Add value to combox Array
                alert(listTitle);
                var tmpEntity = $(this).attr("ows_Entity");
                if (tmpEntity != null)
                    addItemToArray(entityComboBoxArray, $(this).attr("ows_Entity"), (tmpEntity).split("#")[1], i);

                var tmpYear = $(this).attr("ows_Year_Document");
                if (tmpYear != null)
                    addItemToArray(yearComboBoxArray, tmpYear, tmpYear, i);

                var tmpType = $(this).attr("ows_File_x0020_Type");
                if (tmpType != null)
                    addItemToArray(typeComboBoxArray, tmpType, tmpType, i);

                //if option already in Result Select, we move it to the destination RadListBox
                if (isOptionContainInSelect(selectLibraryFileFieldResult, $(this).attr("ows_Title")) == true)
                    listBox = fileslistBoxDest;
                else listBox = fileslistBox;
                addNewFilesItem($(this).attr("ows_ID"), $(this).attr("ows_FileLeafRef"), $(this).attr("ows_Title"), $(this).attr("ows_Entity"), $(this).attr("ows_Year_Document"), $(this).attr("ows_File_x0020_Type"), listBox);
            });


            //Add sorted array value to combobox 
            addArrayItemsToComboBox(entityComboBoxArray.sort(), entityComboBox);
            addArrayItemsToComboBox(yearComboBoxArray.sort(), yearComboBox);
            addArrayItemsToComboBox(typeComboBoxArray.sort(), typeComboBox);
            selectValueForComboBox(entityComboBox, entityValue);
            filterList(fileslistBox, entityComboBox, yearComboBox, typeComboBox);
        }
    }); 
    }
}

但是我无法检索库中的文档。 文档无法加载到我的组合框中。

使用这个“listName:listTitle”是不可能的?

致以最诚挚的问候,

1 个答案:

答案 0 :(得分:0)

executeQueryAsync有两个参数:查询成功时运行的回调函数,以及查询遇到任何错误时要运行的回调函数。

依赖于成功运行的查询的任何代码都应放在里面成功回调函数(executeQueryAsync的第一个参数)。

ctx.executeQueryAsync(
Function.createDelegate(this, 
    function(){
        var listTitle = web.get_title() + " Documents";

        var listBox;
        var i = 0;
        var reggie // ...
        // rest of your code goes here...

    }),Function.createDelegate(this, this.onQueryFailed)
);