我错过了什么,还是真的不可能使用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>
你知道如何解决这个问题吗?查找、连接?在休息吗?谢谢。
唯一的方法是调用两个不同的uri两次,然后通过使用循环和变量在javascript做你需要的动作,像下面的代码:
NEED EDIT FOR CALL
$(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"
}
});
}
Use不等于filter
https://domain.sharepoint.com/sites/demo/_api/web/lists/getbytitle('Documents')/items?&$filter=Title ne null