SharePoint 2013 REST如何$ filter field1 eq field2(不是字段eq constantValue)?

时间:2015-08-18 16:56:56

标签: rest sharepoint filter field

我是否遗漏了某些内容,或者是否真的无法使用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?谢谢。

2 个答案:

答案 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