2015-02-18 3 views
1

Следующий код работает отличноКак загрузить явно столбцы с JavaScript из списка Sharepoint

$(document).ready(function() { 
    var scriptbase = "/_layouts/15/"; 
    $.getScript(scriptbase + "SP.Runtime.js"); 
    ExecuteOrDelayUntilScriptLoaded(ready, "SP.Runtime.js"); 
}) 

function ready() { 
    var scriptbase = "/_layouts/15/"; 
    $.getScript(scriptbase + "SP.js", function(){ 
     var d = $.Deferred(); 
     var path = document.location.href 
     console.log(path);   
     var context = new SP.ClientContext('http://myserver/centrodeprocesos/procesos'); 
     var oList = context.get_web().get_lists().getByTitle('ImagenesDeFondo'); 
     var camlQuery = SP.CamlQuery.createAllItemsQuery(); 
     var collTermListItem = oList.getItems(camlQuery); 
     context.load(collTermListItem);   
     var o = {d: d, collTermListItem:collTermListItem}; 
     context.executeQueryAsync(
      Function.createDelegate(o, onQuerySucceeded), 
      Function.createDelegate(o, onQueryFailed)); 
     return d.promise(); 
    }); 
} 


function onQuerySucceeded() 
{ 
    var listItemEnumerator = this.collTermListItem.getEnumerator(); 
    while (listItemEnumerator.moveNext()) { 
     var oListItem = listItemEnumerator.get_current(); 
     console.log(oListItem.get_item('Title')); 
     //console.log(oListItem.get_item('Url')); 
    } 
    this.d.resolve(oListItem); 
} 

function onQueryFailed() { 
    this.d.reject("something bad happened"); 
} 

Однако мне нужно также напечатать URL, который является полем в списке

$(document).ready(function() { 
    var scriptbase = "/_layouts/15/"; 
    $.getScript(scriptbase + "SP.Runtime.js"); 
    ExecuteOrDelayUntilScriptLoaded(ready, "SP.Runtime.js"); 
}) 

function ready() { 
    var scriptbase = "/_layouts/15/"; 
    $.getScript(scriptbase + "SP.js", function(){ 
     var d = $.Deferred(); 
     var path = document.location.href 
     console.log(path);   
     var context = new SP.ClientContext('http://myserver/centrodeprocesos/procesos'); 
     var oList = context.get_web().get_lists().getByTitle('ImagenesDeFondo'); 
     var camlQuery = SP.CamlQuery.createAllItemsQuery(); 
     var collTermListItem = oList.getItems(camlQuery); 
     context.load(collTermListItem, 'Include(Url)');   
     var o = {d: d, collTermListItem:collTermListItem}; 
     context.executeQueryAsync(
      Function.createDelegate(o, onQuerySucceeded), 
      Function.createDelegate(o, onQueryFailed)); 
     return d.promise(); 
    }); 
} 


function onQuerySucceeded() 
{ 
    var listItemEnumerator = this.collTermListItem.getEnumerator(); 
    while (listItemEnumerator.moveNext()) { 
     var oListItem = listItemEnumerator.get_current(); 
     console.log(oListItem.get_item('Title')); 
     console.log(oListItem.get_item('Url')); 
    } 
    this.d.resolve(oListItem); 
} 

function onQueryFailed() { 
    this.d.reject("something bad happened"); 
} 

Ошибка свойство не было инициализировано или должно быть запрошено явно.

ответ

2

SP.ClientContext.load method позволяет указать, какие свойства необходимо запросить. В примере вы предоставили, только Url недвижимость предлагается:

context.load(collTermListItem, 'Include(Url)'); 

но два свойства освобожденный в результате:

console.log(oListItem.get_item('Title')); //<--this property is not initialized 
console.log(oListItem.get_item('Url')); 

Таким образом, решение было бы запросить оба свойства:

context.load(collTermListItem, 'Include(Title,Url)'); 

Пример

В следующем примере показано, как получить свойства Title и Url из библиотеки Images:

var listTitle = 'Images'; 

var ctx = SP.ClientContext.get_current(); 
var list = ctx.get_web().get_lists().getByTitle(listTitle); 
var items = list.getItems(SP.CamlQuery.createAllItemsQuery()); 
ctx.load(items,'Include(Title,FileRef)');  

ctx.executeQueryAsync(
    function() { 
     for(var i = 0; i < items.get_count();i++) { 
      var item = items.getItemAtIndex(i); 
      console.log(item.get_item('Title')); 
      console.log(item.get_item('FileRef'));  
     } 
    }, 
    function (sender, args) { 
     //Error handling goes here.. 
    });