【问题标题】:Sharepoint REST API filter empty LookUp fieldSharepoint REST API 筛选空查找字段
【发布时间】:2017-04-18 22:57:01
【问题描述】:

我想知道如何在 SharePoint REST API (2013) 中针对空查找筛选 ListItems。 在我的列表项上,有一个查找(单个值,不需要),我想获取查找为空(空白)的所有项目。

_api/web/lists/getbytitle('MyList')/items?$select=Id&$expand=MyLookUp/Id&$filter=??

有人有线索吗?

谢谢

【问题讨论】:

    标签: rest sharepoint sharepoint-2013 sharepoint-api


    【解决方案1】:

    SharePoint 2013 中的 REST API 不支持对列表项查询进行筛选的空值

    但是,您可以将 CAML 查询与 REST API 结合起来以获取所需的数据。

    请参考以下代码: (注意:请更改您的查询/网址):

     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
    });
    

    【讨论】:

      【解决方案2】:

      OP,您的答案非常接近。空查找的 Id 值应为 -1。如果您使用 SP CAML Query Helper 之类的工具探索原始数据,您应该会在未选择的查找中看到 -1;#。

      /items/?$select=Id,Title,Assigned_x0020_To/Id&$expand=Assigned_x0020_To&$filter=(Assigned_x0020_To eq -1) 应该适合你。

      【讨论】:

        【解决方案3】:

        我刚刚找到了一个使用 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
        

        【讨论】:

          猜你喜欢
          • 2014-12-16
          • 2017-12-03
          • 1970-01-01
          • 2023-01-19
          • 1970-01-01
          • 1970-01-01
          • 2021-12-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多