2016-11-08 4 views
0

Ich möchte den Titel der Sharepoint-Liste in JS abrufen.Abrufen von Sharepoint Liste in Javascript

Meine Funktion 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) 
    ); 

ich die Liste abrufen, aber ich würde in einer anderen Funktion verwendet diese Liste wie für die Dokumente Liste meiner Bibliothek in einem Kombinationsfeld erhalten:

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); 
     } 
    }); 
    } 
} 

Aber Ich kann die Dokumente in der Bibliothek nicht abrufen. Die Dokumente werden nicht in mein Kombinationsfeld geladen.

Es ist nicht möglich, dieses "listName: listTitle" zu verwenden?

Mit freundlichen Grüßen,

Antwort

0

executeQueryAsync hat zwei Parameter: die Callback-Funktion ausgeführt werden, wenn die Abfrage erfolgreich ist, und die Callback-Funktion ausgeführt werden, wenn die Abfrage in irgendwelche Fehler ausgeführt wird.

Jeder Code, der auf der Abfrage hängt läuft erfolgreich sollte innerhalb den Erfolg Callback-Funktion (der erste Parameter von executeQueryAsync) platziert werden.

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) 
); 
+0

Perfekt, es ist gut !! Vielen Dank !! – user2814368

Verwandte Themen