2016-12-04 7 views
1

Я хотел бы знать, как я могу фильтровать ListItems в API останова SharePoint (2013) при пустом поиске. В моих элементах списка есть поиск (одно значение, не обязательно), и я хотел бы получить все элементы, где поиск пуст (пустой).Фильтр API Sharepoint REST пустой Поле LookUp

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

У кого-то есть ключ?

Thx

ответ

1

REST API в SharePoint 2013 не поддерживает нулевые значения для фильтрации по элементу списка запросов.

Однако вы можете комбинировать запрос 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

О.П., ваш ответ очень близко. Значение Id для пустых запросов должно быть -1. Если вы исследуете необработанные данные с помощью чего-то вроде SP CAML Query Helper, вы должны увидеть -1; # в невыбранном поиске.

/элементы /? $ Выберите = Id, Title, Assigned_x0020_To/Id & $ расширение = Assigned_x0020_To & $ = фильтр (Assigned_x0020_To экв -1) должны работать для вас.

0

Я только что нашел решение, которое работает с использованием REST, вы просто фильтруете идентификатор поиска больше 0. Все идентификаторы поиска 1 или больше, но с использованием не равных 0 (MyLookup ne 0) завершается сбой, так как null не равный 0. Однако нуль, по-видимому, не является БОЛЬШИМ, чем 0. Это может заставить математиков выкрикивать, но это работает.

_api/web/lists/getbytitle('abc')/items?$select=Id&$expand=MyLookUp/Id&$filter=MyLookup gt 0