SharePoint 2013 - JavaScript:为什么我的CAML查询不会过滤列表数据?

时间:2017-02-07 17:22:57

标签: javascript sharepoint sharepoint-2013 csom

我正在尝试使用JavaScript在SharePoint 2013网站上的列表中显示数据。我能够显示列表中的数据,但我也尝试使用CAML查询过滤该数据。我的代码正在处理没有显示错误,但它显示列表中的所有项目,而不是我期望的结果筛选列表。请参阅下面的代码,如果我做错了,请告诉我:

function GetListItemsFromSPList(listId) {   
    var context = new SP.ClientContext.get_current();
    var web = context.get_web();
    var list = web.get_lists().getById(listId);
    var query =  new SP.CamlQuery();
    query.set_viewXml('<Query><Where><Eq><FieldRef Name=\'Title\' /><Value Type=\'Single line of text\'>CR1</Value></Eq></Where></Query>');
    var queryResults = list.getItems(query);
    context.load(queryResults);
    context.executeQueryAsync(Function.createDelegate(this, function () { onQuerySuccess(queryResults); }),
    Function.createDelegate(this, this.onQueryFailed));
}

function onQuerySuccess(allItems) {
    var listItemInfo = '';
    var ListEnumerator = allItems.getEnumerator();
    while (ListEnumerator.moveNext()) 
    {
        var currentItem = ListEnumerator.get_current();

        listItemInfo += '\nID: ' + currentItem.get_id() + ", Title: " + currentItem.get_item('Title') + ", ContractNo: " + currentItem.get_item('ContractNo');

    }

    alert(listItemInfo.toString());
}

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

1 个答案:

答案 0 :(得分:1)

CAML查询中列的类型应为&#34; Text&#34;而不是&#34;单行文字&#34;。尝试将该行更改为:

query.set_viewXml('<View><Query><Where><Eq><FieldRef Name=\'Title\' /><Value Type=\'Text\'>CR1</Value></Eq></Where></Query></View>');