我正在尝试使用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());
}
答案 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>');