SharePoint 2013 - JavaScript:为什么我的 CAML 查询没有过滤我的列表数据?
SharePoint 2013 - JavaScript: Why isn't my CAML query filtering my list data?
我正在尝试使用 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());
}
CAML 查询中的列类型应为 "Text" 而不是 "Single line of text"。尝试将该行更改为:
query.set_viewXml('<View><Query><Where><Eq><FieldRef Name=\'Title\' /><Value Type=\'Text\'>CR1</Value></Eq></Where></Query></View>');
我正在尝试使用 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());
}
CAML 查询中的列类型应为 "Text" 而不是 "Single line of text"。尝试将该行更改为:
query.set_viewXml('<View><Query><Where><Eq><FieldRef Name=\'Title\' /><Value Type=\'Text\'>CR1</Value></Eq></Where></Query></View>');