我是否遗漏了某些内容,或者是否真的无法使用SharePoint REST API根据字段和其他字段的内容过滤列表?
常量值起作用:
?$select=Title&$filter=Title eq 'Hello world'
或
?$select=Title&$filter='Hello world' eq Title
但不是
?$select=Title&$filter=Title eq Title
也不是
?$select=Title&$filter=Title eq OtherField
,也不
?$select=Title&$filter=substringof(Title, Title)
由于过滤受限,REST几乎没用。
有没有办法使用变量或引用其他字段?
修改 我刚检查过,显然这是SharePoint的一个限制。 它也不能使用CAML,显然所有的比较都必须是Field到ConstantValue。
也不起作用:
<Query>
<Where><Eq><FieldRef Name="Title" /><FieldRef Name="Title" /></Eq></Where>
</Query>
知道如何解决这个问题吗?查找,加入?在REST?谢谢。
答案 0 :(得分:1)
唯一的方法是调用两个不同的uri两次,然后通过在javascript中使用循环和变量来执行您需要的操作,如下面的代码:
需要编辑电话
$(function (){loadRequest("/_api//web/GetFolderByServerRelativeUrl('/PublishingImages/wodSlider')/files",
function (data) {
var wodsliderData = data.d.results;
var viewXml = '<View Scope="RecursiveAll"><Query><Where><Eq><FieldRef Name="FSObjType" /><Value Type="Integer">1</Value></Eq></Where></Query></View>';
var array2 = [];
array2=getListItems(webUrl,listTitle,viewXml);
var html='';
if(wodsliderData.length!=0){
for(i=0;i<wodsliderData.length;i++){
for(j=0;j<array2.length;j++){
//............. your code here
}
}
}
$('#wodSliderHtml').html(html);
});
});
function getListItems(webUrl,listTitle, viewXml)
{
var url = webUrl + "/_api/web/lists/getbytitle('" + listTitle + "')/getitems";
var queryPayload = {
'query' : {
'__metadata': { 'type': 'SP.CamlQuery' },
'ViewXml' : viewXml
}
};
return $.ajax({
url: url,
method: "POST",
contentType: "application/json;odata=verbose",
data: JSON.stringify(queryPayload),
headers: {
"X-RequestDigest": $("#__REQUESTDIGEST").val(),
"Accept": "application/json; odata=verbose"
}
});
}
答案 1 :(得分:0)
使用不等于过滤器
https://domain.sharepoint.com/sites/demo/_api/web/lists/getbytitle('Documents')/items?&$filter=Title ne null