2016-08-05 96 views
0

我試圖檢索列表項目標題將其插入我的SharePoint主頁中的div部分,我發現這個代碼檢索項目的URL。如何使用JavaScript檢索列表項目標題

它工作得很好。

var clientContext = SP.ClientContext.get_current(); 
var list = clientContext.get_web().get_lists().getByTitle("Artdesk alertes"); 

var caml = new SP.CamlQuery(); 
caml.set_viewXml("<View />"); 

var listItemCollection = list.getItems(caml); 

clientContext.load(list, "DefaultDisplayFormUrl"); 
clientContext.load(listItemCollection); 

clientContext.executeQueryAsync(function() { 

    for(var i in listItemCollection.get_data()) { 

     console.log("DispFormRelativeUrl: " + list.get_defaultDisplayFormUrl() + "?ID=" +listItemCollection.get_data()[i].get_id()); 
    } 

}, function(sender, args) { 
    window.console && console.log(args.get_message()); 
}); 

如何使用JavaScript對象模型獲取列表項標題?

回答

1
clientContext.load(list, "DefaultDisplayFormUrl"); 

您在這裏請求 「DefaultDisplayFormUrl」 屬性。 您可以指定Title屬性或僅刪除請求特定屬性以獲取其中的每個屬性(不建議 - 您只能請求那些需要減少負載的屬性)。 因此,這將是clientContext.load(list, "Title")clientContext.load(list);

clientContext.executeQueryAsync(function() {  
    var listItemEnumerator = collListItem.getEnumerator(); 
    while (listItemEnumerator.moveNext()) { 
     var oListItem = listItemEnumerator.get_current();  
     console.log("List Title", oListItem.get_item('Title')); 
    } 
}, <...>); 

請注意,您可以通過get_item方法得到任何財產(但你必須請求加載該財產或會拋出異常)。

這裏是工作代碼:

var clientContext = SP.ClientContext.get_current(); 
var list = clientContext.get_web().get_lists().getByTitle("Artdesk alertes"); 

var caml = new SP.CamlQuery(); 
caml.set_viewXml(""); // empty query also works 

var listItemCollection = list.getItems(caml); 

clientContext.load(listItemCollection); // i requested every property 

clientContext.executeQueryAsync(function() { 
    var listItemEnumerator = listItemCollection.getEnumerator(); 

    while (listItemEnumerator.moveNext()) { 
     var oListItem = listItemEnumerator.get_current(); 
     console.log(oListItem.get_item('Title')); 
    } 

}, function(sender, args) { 
    window.console && console.log(args.get_message()); 
}); 
+0

謝謝你的發現它工作得很好,我只有最後一個問題, 我怎麼能只檢索我的列表中的最後2項? – ysfibm

+0

您應該使用caml查詢。下面是查詢檢索最後項目 ' \t \t \t \t \t ' 排序依據節點 - 你告訴共享點按降序排列項目(按降序排列,不存在降序屬性,因此請使用Ascending ='FALSE')。 RowLimit節點 - 只帶2個項目。 它在這裏'caml.set_viewXml();' 請注意,在列表中包含4999+個項目時,您將收到閾值錯誤。 –

+0

謝謝,在我的html頁面我有一個div標籤:

我怎麼能把我的js功能的結果放在div中? 感謝您的幫助 – ysfibm

0

檢查get_item( '標題')在這個代碼MSDN

function retrieveListItems(siteUrl) { 
    var clientContext = new SP.ClientContext(siteUrl); 
    var oList = clientContext.get_web().get_lists().getByTitle('Announcements'); 

    var camlQuery = new SP.CamlQuery(); 
    camlQuery.set_viewXml(
     '<View><Query><Where><Geq><FieldRef Name=\'ID\'/>' + 
     '<Value Type=\'Number\'>1</Value></Geq></Where></Query>' + 
     '<RowLimit>10</RowLimit></View>' 
    ); 
    this.collListItem = oList.getItems(camlQuery); 

    clientContext.load(collListItem); 
    clientContext.executeQueryAsync(
     Function.createDelegate(this, this.onQuerySucceeded), 
     Function.createDelegate(this, this.onQueryFailed) 
    ); 
} 

function onQuerySucceeded(sender, args) { 
    var listItemInfo = ''; 
    var listItemEnumerator = collListItem.getEnumerator(); 

    while (listItemEnumerator.moveNext()) { 
     var oListItem = listItemEnumerator.get_current(); 
     listItemInfo += '\nID: ' + oListItem.get_id() + 
      '\nTitle: ' + oListItem.get_item('Title') + 
      '\nBody: ' + oListItem.get_item('Body'); 
    } 

    alert(listItemInfo.toString()); 
} 

function onQueryFailed(sender, args) { 
    alert('Request failed. ' + args.get_message() + 
     '\n' + args.get_stackTrace()); 
} 
+0

您好謝謝,我嘗試它,它一點兒也不爲我 – ysfibm

+0

任何錯誤向我們展示了工作? – jpussacq

+0

是的,當我把它放在控制檯,我沒有結果只有undefined – ysfibm

相關問題