2017-10-18 49 views
0

Je souhaite convertir une liste de points de partage en un tableau dans lequel chaque dictionnaire du tableau contient toutes les valeurs de clé d'un enregistrement de point de partage donné.Comment créer un tableau javascript à partir d'une liste SharePoint?

J'ai essayé ce qui suit:

function array_from_sharepoint_list(){ 
    var array = [] 
    var context = SP.ClientContext.get_current() 
    var list = context.get_web().get_lists().getByTitle('Sharepoint_List') 
    var caml = new SP.CamlQuery() 
    caml.set_viewXML('') 
    var listitems = list.getItems(caml) 
    context.load(listitems,'Include(ID,Title,col_one,col_two)') 
    context.executeQueryAsync(
     Function.createDelegate(this,function(){ 
      var listEnumerator = listitems.getEnumerator(); 
      while (listEnumerator.moveNext()){ 
       var list_item = listEnumerator.get_current(); 
       var item_dictionary = {ID:list_item.get_item('ID'),Title:list_item.get_item('Title'),col_one:list_item.get_item('col_one'),col_two:list_item.get_item('col_two')} 
       array.push(item_dictionary) 
      } 
     }, 
     Function.createDelegate(this,function(){}))) 
    return array 
} 

Le résultat ne me donne pas le tableau nécessaire à chaque colonne dans la liste sharepoint, car il tire seulement quatre colonnes et je ne connais pas tous les noms de colonnes .

+0

Mmm ne sais pas si elle est la même chose pour vous ... ou si elle change à chaque fois .. mais j'ai quelque chose comme ça en faisant quelque chose comme ça '' 'Object.keys (oListItem.get_objectData() [" $ 1h_0 "] [" $ m_dict "])' '' Je ne suis pas sûr de les 2 dernières touches, si elles changent en fonction des environnements ou des appels ... –

Répondre

1

Je préfère utiliser l'API REST, avec jQuery:

function array_from_sharepoint_list(listName){ 
    var array = [] 
    var appWebUrl = _spPageContextInfo.webAbsoluteUrl; 

    $.ajax({ 
     url: appWebUrl + "/_api/web/lists/getbyTitle('" + ListName + "')/items", 
     type: "GET", 
     async: false, 
     headers: { 
      "accept": "application/json;odata=verbose" 
     }, 
     success: function (data) { 
      array = data.d.results; 
     }, 
     error: function (err) { 
      console.log(err); 
     } 
    }); 
    return array 
} 

REST documentation de l'API: https://msdn.microsoft.com/en-us/library/office/jj860569.aspx

+0

C'est exactement ce dont j'ai besoin! Par ailleurs, la variable ListName lance une erreur variable due à l'enveloppe – Chris