我希望sharepoint 2013中的显示列表使用js

时间:2014-01-06 07:23:10

标签: sharepoint sharepoint-2013

以下是我的代码:

 retrieveListItems('https://sustec29-public.sharepoint.com');

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() + 
        '\ngroup: ' + oListItem.get_item('group') + 
        '\ndisc: ' + oListItem.get_item('disc');
}    
        $('#message').text(listItemInfo.toString());
}

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

`

但浏览器视图错误 - The property or field has not been initialized. It has not been requested or the request has not been executed. It may need to be explicitly requested.

如果我写

    '\ntitle: ' + oListItem.get_item('title') + '\nbody: ' + oListItem.get_item('body');

并重命名字段表 - 一切正常。 但我想添加自己的领域..

1 个答案:

答案 0 :(得分:0)

尝试将ViewFields部分添加到您的caml查询中:

camlQuery.set_viewXml(
    '<View><Query><Where><Geq><FieldRef Name="ID"/>' + 
    '<Value Type="Number">1</Value></Geq></Where></Query>' + 
    '<RowLimit>10</RowLimit><ViewFields><FieldRef Name="group" /><FieldRef Name="disk" /></ViewFields></View>'

编辑: 另一种可以尝试实现此目的的方法是在加载方法调用中添加Include字符串:

clientContext.load(collListItem, 'Include(Id, disk, group)');