2016-12-04 10 views
1

空のルックアップでSharePoint rest API(2013)でListItemをフィルタする方法を知りたいと思います。 私のリストアイテムには、ルックアップ(単一値、必須ではない)があり、ルックアップが空(空白)のすべてのアイテムを取得したいと考えています。Sharepoint REST APIフィルタ空のルックアップフィールド

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

誰かが手掛かりを持っていますか? SharePointの2013

Thxを

答えて

1

REST APIはを照会し、リスト項目をフィルタリングするためのnull値をサポートしていません。

しかし、CAMLクエリとREST APIを組み合わせて、必要なデータを取得することができます。

コードの下に参照してください: (注:クエリ/ 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 
}); 
1

OPは、あなたの答えは本当に近いです。空のルックアップのId値は-1にする必要があります。 SP CAML Query Helperのようなものを使って生データを調べると、選択されていない参照に-1;#が表示されます。

/アイテム/?$選択= ID、タイトル、Assigned_x0020_To/ID & $拡大= Assigned_x0020_To & $フィルタ=(Assigned_x0020_To当量-1)あなたのために働く必要があります。

0

RESTを使用するソリューションが見つかったばかりで、ルックアップIDを0より大きい値にフィルタリングするだけです。すべてのルックアップIDは1以上ですが、0以外の値を使用すると(MyLookup ne 0)失敗します。しかし、nullは明らかに0より大きい値ではありません。それは数学のオタクをつまらせるかもしれないが、それはうまくいく。

_api/web/lists/getbytitle('abc')/items?$select=Id&$expand=MyLookUp/Id&$filter=MyLookup gt 0 
関連する問題