Sharepoint REST API 过滤空查找字段
Sharepoint REST API filter empty LookUp field
我想知道如何在空查找时过滤 SharePoint rest API (2013) 中的 ListItems。
在我的列表项上,有一个查找(单个值,不是必需的),我想获取查找为空(空白)的所有项目。
_api/web/lists/getbytitle('MyList')/items?$select=Id&$expand=MyLookUp/Id&$filter=??
有人知道吗?
感谢
SharePoint 2013 中的 REST API 不支持空值过滤列表项查询。
不过,您可以将 CAML 查询与 REST API 结合使用以获取所需数据。
请参考以下代码:
(注意:请更改您的query/URL):
function _rest_Post(rquest) {
return $.ajax({
method: rquest.method,
url: rquest.url,
contentType: rquest.contentType,
headers: rquest.header,
data: JSON.stringify(rquest.body),
});
}
function GetByCaml(serviceParams) {
var req = {
method: 'POST',
url: url + "/_api/web/lists/getByTitle('" + serviceParams.create.lName + "')/getitems",
header: {
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"accept": "application/json;odata=verbose",
"content-type": "application/json;odata=verbose"
},
body: serviceParams.create.body,
contentType: "application/json;odata=verbose",
};
return _rest_Post(req);
}
function getData(){
var queryViewXml = "<View><Query><Where><IsNull><FieldRef Name='Project_x0020_Manager'/></IsNull></Where></Query><ViewFields><FieldRef Name='Title'/></ViewFields></View>";
var params = {};
params.create= {};
params.create.lName = "MyList";
params.create.filter = "";
params.create.body = {
'query':{
'__metadata': { 'type': 'SP.CamlQuery' },
'ViewXml': queryViewXml
}
}
return GetByCaml(params);
};
getData().then(function(data){
//success handler
}, function(error){
//failure handler
});
OP,你的答案非常接近。空查找的 Id 值应为 -1。如果您使用 SP CAML 查询助手之类的工具探索原始数据,您应该会在未selected 查找中看到 -1;#。
/items/?$select=Id,Title,Assigned_x0020_To/Id&$expand=Assigned_x0020_To&$filter=(Assigned_x0020_To eq -1) 应该有效给你。
我刚刚找到了一个使用 REST 的解决方案,您只需将查找 ID 过滤为大于 0。所有查找 ID 都为 1 或更大,但使用不等于 0 (MyLookup ne 0) 失败,因为 null不等于 0。但是,null 显然也不大于 0。它可能会让数学极客们抽搐,但它确实有效。
_api/web/lists/getbytitle('abc')/items?$select=Id&$expand=MyLookUp/Id&$filter=MyLookup gt 0
我想知道如何在空查找时过滤 SharePoint rest API (2013) 中的 ListItems。 在我的列表项上,有一个查找(单个值,不是必需的),我想获取查找为空(空白)的所有项目。
_api/web/lists/getbytitle('MyList')/items?$select=Id&$expand=MyLookUp/Id&$filter=??
有人知道吗?
感谢
SharePoint 2013 中的 REST API 不支持空值过滤列表项查询。
不过,您可以将 CAML 查询与 REST API 结合使用以获取所需数据。
请参考以下代码: (注意:请更改您的query/URL):
function _rest_Post(rquest) {
return $.ajax({
method: rquest.method,
url: rquest.url,
contentType: rquest.contentType,
headers: rquest.header,
data: JSON.stringify(rquest.body),
});
}
function GetByCaml(serviceParams) {
var req = {
method: 'POST',
url: url + "/_api/web/lists/getByTitle('" + serviceParams.create.lName + "')/getitems",
header: {
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"accept": "application/json;odata=verbose",
"content-type": "application/json;odata=verbose"
},
body: serviceParams.create.body,
contentType: "application/json;odata=verbose",
};
return _rest_Post(req);
}
function getData(){
var queryViewXml = "<View><Query><Where><IsNull><FieldRef Name='Project_x0020_Manager'/></IsNull></Where></Query><ViewFields><FieldRef Name='Title'/></ViewFields></View>";
var params = {};
params.create= {};
params.create.lName = "MyList";
params.create.filter = "";
params.create.body = {
'query':{
'__metadata': { 'type': 'SP.CamlQuery' },
'ViewXml': queryViewXml
}
}
return GetByCaml(params);
};
getData().then(function(data){
//success handler
}, function(error){
//failure handler
});
OP,你的答案非常接近。空查找的 Id 值应为 -1。如果您使用 SP CAML 查询助手之类的工具探索原始数据,您应该会在未selected 查找中看到 -1;#。
/items/?$select=Id,Title,Assigned_x0020_To/Id&$expand=Assigned_x0020_To&$filter=(Assigned_x0020_To eq -1) 应该有效给你。
我刚刚找到了一个使用 REST 的解决方案,您只需将查找 ID 过滤为大于 0。所有查找 ID 都为 1 或更大,但使用不等于 0 (MyLookup ne 0) 失败,因为 null不等于 0。但是,null 显然也不大于 0。它可能会让数学极客们抽搐,但它确实有效。
_api/web/lists/getbytitle('abc')/items?$select=Id&$expand=MyLookUp/Id&$filter=MyLookup gt 0